C#如何替换Slash Quote“

时间:2013-04-24 16:09:17

标签: c# string replace quote slash

我正在尝试创建一个搜索并替换这样的字符串:

src=\"/path/file.jpg\"

src=\"http://mysite.com/path/file.jpg\"

通过搜索属性src和等于斜杠引用。问题是创建搜索字符串,每次我这样做,它就会成为搜索

src=\\"/代替src=\"/

如果此段中的property =“src”,我该如何才能使其工作?
string equalsSlashQuote = "=" + @"\" + "\"";
string search = property + equalsSlashQuote + "/";
string replace = property + equalsSlashQuote + SiteURL + "/";
input = input.Replace(search, replace);

问题是\,我甚至尝试将其添加为字符代码值92,它仍然在搜索变量中变为\\。

1 个答案:

答案 0 :(得分:3)

如果你在字符串前面放了一个@,那么字符串就是“literal”而不使用控制字符或转义符(使用backslahses)。

所以@"hello\nico"会产生一个字符串,其中的单词“hello”和“nico”用斜杠分隔,而不是用换行符分隔的单词“hello”和“ico”。

你也可以定义一个不带@的字符串和带有这样的控制字符:"hello\\nico",它们会有相同的结果。第一个反斜杠是控制字符,而不是字符串中的实际值。

请注意:如果您的IDE /调试器显示字符串的值,则还将使用第二种格式显示文本。因此,字符串中的反斜杠将通过在其前面添加另一个反斜杠来进行转义。它看起来像字符串包含双斜线,但它不包含。您可以通过以下方式验证:

  • 检查字符串的长度并计算字符数。
  • 将值写入Debug.WriteLineConsole.WriteLine之类的输出,它将显示该字符串,而不会将斜杠作为转义。

你说:每次我这样做,都会搜索src=\\"/而不是src=\"/你确定吗?我认为你被IDE /调试器所欺骗,它将显示带有第二个反斜杠的字符串,这只是一个控制字符。