如何让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's的ToString方法不转义字符串中的转义字符?

StringBuilder不转义字符。它不任何特别或聪明。你只是在调试器中看到这个,显示一个转义的版本。

您说您的结果来自调试。如果你指的是调试器本身,通过将鼠标悬停在变量上或将其放在VS中的观察列表中来检查字符串内容,那么调试器显示将转义其窗口/工具提示中的斜杠。然而,如果你在你的代码中实际输出字符串,你会看到转义不存在-这只是一个调试器的"特性"。

System.Diagnostics.Debug.Writeline(myOutputVariable);

,在输出窗口中查看"真实"内容。