感谢NgM,我在.NET 3.5中使用StringBuilder来查找和转义特殊字符。但是,当我使用ToString方法时,它会逃脱转义字符,然后使前一个练习变得无用。有谁知道怎么解决这个问题?
以下是代码:
private String ParseAndEscapeSpecialChars(String input)
{
StringBuilder sBuilder = new StringBuilder(input);
String output;
String specialChars = @"([-\]\[<>\?\*\\\""/\|\~\(\)\#/=><+\%&\^\'])";
Regex expression = new Regex(specialChars);
if (expression.IsMatch(input))
{
sBuilder.Replace(@"\", @"\\");
sBuilder.Replace(@"'", @"\'");
}
output = sBuilder.ToString();
return output;
}
以下是调试的结果:
input "005 - SomeCompany's/OtherCompany's Support Center"
sBuilder {005 - SomeCompany\'s/OtherCompany\'s Support Center}
output "005 - SomeCompany\\'s/OtherCompany\\'s Support Center"
答案 0 :(得分:7)
StringBuilder
不会转义字符。它没有没有特别或聪明。您在调试器中看到这些甜甜圈的美元, 会向您显示转义版本。
答案 1 :(得分:4)
你说你的结果来自调试。如果您指的是调试器本身,通过将鼠标悬停在变量上或将其放在VS中的监视列表中来检查字符串内容,则调试器显示将在其窗口/工具提示中转义斜杠。但是,如果您实际在代码中输出字符串,您将看到转义不存在 - 它只是一个调试器“功能”。
尝试
System.Diagnostics.Debug.Writeline(myOutputVariable);
并查看输出窗口以查看“真实”内容。