我有一个应用程序,可以读取数千行的文档.这个文本文件中有一个特定的子字符串,有时会像这个"12345"NNNNNNN一样开始.问题是每当C#读取该行时,它就会给我一些类似于"\ 12345 \"NNNNNN的东西.我已经尝试了string.Replace(@"\","")扩展,但它仍然返回相同的值,并没有替换任何令我惊讶的东西.这是代码:
maskList.AccountMask = @line.Substring(156, 40); maskList.AccountMask = maskList.AccountMask.Replace(@"\", "");
返回:"\"492200 \"NNNNNNNNNN
有什么建议?
字符串的调试视图会转义通常在代码中转义的内容.这意味着内联引号或实际引用等内容将使用a进行转义\
(使引号看起来像\"
单斜杠一样\\
).
这些斜杠不在实际字符串中,它们仅在文本查看器中.您可以通过将字符串写出到控制台或调试输出来验证.你string.Replace
没有工作,因为没有什么可以替代的.
您可以使用非常小的控制台程序验证这一点:
private static void Main(string[] args) { string s = ((char)34) + "492200" + ((char)34) + "NNNNNNNNN"; Console.WriteLine(s); Console.ReadKey(true); }
字符34是"
字符,所以我构造了字符串而不使用\来在代码中转义它们.在ReadKey
调用时设置断点并检查变量s
显示"\"492200\"NNNNNNNNN"
,但控制台打印出没有\的字符串:
您还会注意到,该字符串也被引号括起来,并且不是原始字符串的一部分.单击小放大镜将显示"Text Visualizer",其中显示未转义的字符串: