如何让StringBuilder's的ToString方法不转义字符串中的转义字符?
本文关键字:转义字符 转义 字符串 方法 ToString StringBuilder | 更新日期: 2023-09-27 18:03:37
多亏了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"
StringBuilder
不转义字符。它不任何特别或聪明。你只是在调试器中看到这个,显示一个转义的版本。
您说您的结果来自调试。如果你指的是调试器本身,通过将鼠标悬停在变量上或将其放在VS中的观察列表中来检查字符串内容,那么调试器显示将转义其窗口/工具提示中的斜杠。然而,如果你在你的代码中实际输出字符串,你会看到转义不存在-这只是一个调试器的"特性"。
试
System.Diagnostics.Debug.Writeline(myOutputVariable);
,在输出窗口中查看"真实"内容。