3

我正在用黑色空格替换字符“\”。

这是字符串,

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

但它无法正常工作,输出消息假设为“http://www.youtube.com/v/”,任何人都可以帮助我,谢谢!

4

4 回答 4

6

您的字符串没有反斜杠!

字符串中的单个反斜杠具有“转义”下一个字符的特殊属性。因此,您的字符串确实包含以下内容:

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

字符串中的每个反斜杠都在转义下一个正斜杠。它不是一个实际的反斜杠字符,因此搜索该字符将一无所获。

编辑:根据我的编译器,\/这不是有效的转义序列。正斜杠没有特殊含义,因此无法转义。您的字符串在技术上无效。根据您获得该字符串的方式,您有不同的选择。@在字符串前放置一个 at 符号:

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

将按字面意思查看它,什么都不转义(除了关闭引号)。在这种情况下,您的字符串中将有可以替换的实际反斜杠字符。

如其他答案中所述,要替换反斜杠,您实际上需要四个,如下所示:

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

您不需要转义正斜杠:

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

是一个非常好的字符串文字。

Replace不起作用,因为反斜杠在\C# 的字符串文字和正则表达式中都是转义符号。因此,您需要四个反斜杠来匹配字符串中的单个反斜杠。

于 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 string literals。它以@ 开头,也用双引号括起来。

如果要替换“/”,可以直接使用 YourString.Replace("/","") 方法。

于 2012-08-15T13:33:07.103 回答