文字「\」を黒いスペースに置き換える作業を行っています。
これが文字列です。
string message = "http:\/\/www.youtube.com\/v\/"
string message = Regex.Replace(message , "\\", "");
しかし、それは正しく機能していません。出力メッセージは「http://www.youtube.com/v/」であると仮定します。誰か助けてください、ありがとう!
文字列にはバックスラッシュがありません!
文字列内の1つの円記号には、次の文字を「エスケープ」するという特別なプロパティがあります。そのため、文字列には実際に次のものが含まれています。
文字列の各バックスラッシュは、次のスラッシュをエスケープしています。これは実際の円記号ではないため、その文字を検索しても何も起こりません。
編集:私のコンパイラによると、\/
は有効なエスケープシーケンスではありません。スラッシュは特別な意味を持たないため、エスケープすることはできません。文字列は技術的に無効です。その文字列を取得した方法に応じて、さまざまなオプションがあります。文字列の前にアットマークを付ける@
:
string message = @"http:\/\/www.youtube.com\/v\/"
文字通り表示し、何もエスケープしません(引用符を閉じる場合を除く)。そのような状況では、文字列に実際のバックスラッシュ文字が含まれ、置き換えることができます。
他の回答で述べたように、バックスラッシュを置き換えるには、実際には次のように4つ必要です。
Regex.Replace(message, "\\\\", "");
スラッシュをエスケープする必要はありません。
string message = "http://www.youtube.com/v/";
完全に優れた文字列リテラルです。
バックスラッシュはC#の文字列リテラルと正規表現の両方でエスケープ記号であるため、Replace
は機能しません。\
したがって、文字列内の1つの円記号と一致させるには、4つの円記号が必要です。
文字列に文字message
が含まれていません\
。/
文字をエスケープする必要はまったくありません。
文字列をそのまま表示したい場合は、次の@
記号を使用します。
string message = @"http:\/\/www.youtube.com\/v\/";
あなたの文字列には何も問題はありません。「http://www.youtube.com/v/」をメッセージとして直接使用できます。/ はエスケープする必要はありません。それは完全に合法的な文字です。
他の特殊文字を使用したい場合は、Verbatim 文字列リテラルを使用できます。@ で始まり、二重引用符で囲みます。
また、「/」を置き換えたい場合は、直接 YourString.Replace("/","") メソッドを使用できます。