1

我正在尝试创建一个搜索和替换字符串,如下所示:

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

4

1 回答 1

3

如果您在字符串之前放置一个 @,则该字符串将变为“文字”而不使用控制字符或转义符(使用反斜杠)。

因此@"hello\nico"将产生一个字符串,其中单词“hello”和“nico”由斜线分隔,而不是单词“hello”和“ico”由换行符分隔。

您还可以定义一个不带@ 并带有控制字符的字符串,如下所示:"hello\\nico"这将具有相同的结果。第一个反斜杠是控制字符,而不是字符串中的实际值。

请注意:如果您的 IDE/调试器显示一个字符串的值,at 也将使用第二种格式来显示文本。因此,字符串内的反斜杠将通过在其前面放置另一个反斜杠来进行转义。看起来字符串包含双斜杠,但事实并非如此。您可以通过以下方式验证这一点:

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

你说:每次我这样做时,它都会变成搜索src=\\"/而不是src=\"/. 你确定吗?我认为你被 IDE / 调试器愚弄了,它会用第二个反斜杠显示字符串,这只是一个控制字符。

于 2013-04-24T16:15:50.300 回答