C# 替换转义字符

4
我将一个文本文件解析为一个 List<string> 对象,但该测试文件包含 \n\t,然而一旦我将字符串输出到控制台,它们显示为 "\n" 和 "\t" 而不是新行和制表符。
目前我正在使用 myList[i].Replace(@"\n", "\n").Replace(@"\t", "\t"),但这似乎有点麻烦,特别是如果将来需要添加更多的转义序列。
有没有办法取消转义序列? 像 string.UnEscape 这样的东西会更完美。

1
我理解的是测试文件会将\n\t保留为文本,对吗? - sll
@sll 是的,纯文本文档是在记事本中编写的。 - Joey Ciechanowicz
你确定文本文件中的转义序列与C#使用的转义序列完全匹配吗?如果不是,最好编写自己的 Unescape 方法。 - Heinzi
@Heinzi 是的,我正在编写测试文件。 - Joey Ciechanowicz
好的,你如何解析一个文件? - sll
@sll 使用 StreamReader.ReadLine(),然后将字符串分割后存储在 List<string> 中。 - Joey Ciechanowicz
2个回答

3
你可以编写自己的辅助程序...
 public static class Helper
    {
        public static string Unescape(this string val)
        {
            return val.Replace(@"\n", "\n").Replace(@"\t", "\t");
        }
    }

1

我不确定这个是否完全符合你的要求,但在RegEx名称空间中有一个Unescape方法。

string result = Regex.Unescape(myList[i]);

注意这个问题...如果Unescape方法遇到其他无法转换的转义序列,例如\w或\s,它会抛出ArgumentException异常。 - John Sobolewski
正是我正在寻找的内容,我确实遇到了它,但认为它只用于正则表达式,想来我应该更好地阅读文档。 - Joey Ciechanowicz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接