C#如何更换Slash Quote“

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

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,它仍然在搜索变量中变为\\。

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

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

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

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

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

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