3

文字「\」を黒いスペースに置き換える作業を行っています。

これが文字列です。

string message = "http:\/\/www.youtube.com\/v\/"
string message = Regex.Replace(message , "\\", ""); 

しかし、それは正しく機能していません。出力メッセージは「http://www.youtube.com/v/」であると仮定します。誰か助けてください、ありがとう!

4

4 に答える 4

6

文字列にはバックスラッシュがありません!

文字列内の1つの円記号には、次の文字を「エスケープ」するという特別なプロパティがあります。そのため、文字列には実際に次のものが含まれています。

http://www.youtube.com/v/

文字列の各バックスラッシュは、次のスラッシュをエスケープしています。これは実際の円記号ではないため、その文字を検索しても何も起こりません。

編集:私のコンパイラによると、\/は有効なエスケープシーケンスではありません。スラッシュは特別な意味を持たないため、エスケープすることはできません。文字列は技術的に無効です。その文字列を取得した方法に応じて、さまざまなオプションがあります。文字列の前にアットマークを付ける@

string message = @"http:\/\/www.youtube.com\/v\/"

文字通り表示し、何もエスケープしません(引用符を閉じる場合を除く)。そのような状況では、文字列に実際のバックスラッシュ文字が含まれ、置き換えることができます。

他の回答で述べたように、バックスラッシュを置き換えるには、実際には次のように4つ必要です。

Regex.Replace(message, "\\\\", "");
于 2012-08-15T13:14:30.747 に答える
3

スラッシュをエスケープする必要はありません。

string message = "http://www.youtube.com/v/";

完全に優れた文字列リテラルです。

バックスラッシュはC#の文字列リテラルと正規表現の両方でエスケープ記号であるため、Replaceは機能しません。\したがって、文字列内の1つの円記号と一致させるには、4つの円記号が必要です。

于 2012-08-15T13:14:46.277 に答える
1

文字列に文字messageが含まれていません\/文字をエスケープする必要はまったくありません。

文字列をそのまま表示したい場合は、次の@記号を使用します。

string message = @"http:\/\/www.youtube.com\/v\/";
于 2012-08-15T13:15:16.337 に答える
1

あなたの文字列には何も問題はありません。「http://www.youtube.com/v/」をメッセージとして直接使用できます。/ はエスケープする必要はありません。それは完全に合法的な文字です。

他の特殊文字を使用したい場合は、Verbatim 文字列リテラルを使用できます。@ で始まり、二重引用符で囲みます。

また、「/」を置き換えたい場合は、直接 YourString.Replace("/","") メソッドを使用できます。

于 2012-08-15T13:33:07.103 に答える