我正在尝试创建一个搜索并替换这样的字符串:
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,它仍然在搜索变量中变为\\。
答案 0 :(得分:3)
如果你在字符串前面放了一个@,那么字符串就是“literal”而不使用控制字符或转义符(使用backslahses)。
所以@"hello\nico"
会产生一个字符串,其中的单词“hello”和“nico”用斜杠分隔,而不是用换行符分隔的单词“hello”和“ico”。
你也可以定义一个不带@的字符串和带有这样的控制字符:"hello\\nico"
,它们会有相同的结果。第一个反斜杠是控制字符,而不是字符串中的实际值。
请注意:如果您的IDE /调试器显示字符串的值,则还将使用第二种格式显示文本。因此,字符串中的反斜杠将通过在其前面添加另一个反斜杠来进行转义。它看起来像字符串包含双斜线,但它不包含。您可以通过以下方式验证:
Debug.WriteLine
或Console.WriteLine
之类的输出,它将显示该字符串,而不会将斜杠作为转义。你说:每次我这样做,都会搜索src=\\"/
而不是src=\"/
。你确定吗?我认为你被IDE /调试器所欺骗,它将显示带有第二个反斜杠的字符串,这只是一个控制字符。