从文件中转义字符串

时间:2011-07-15 19:18:20

标签: c#

我必须解析一些包含一些字符串的文件,其中包含我需要转义的字符。举一个简短的例子你可以想象这样的事情:

        var stringFromFile = "This is \\n a test \\u0085";
        Console.WriteLine(stringFromFile);

以上结果输出:

        This is \n a test \u0085

,但我希望文本转义。我如何在C#中执行此操作?该文本也包含unicode字符。

明确;上面的代码只是一个例子。该文本包含文件中的\ n和unicode \ u00xx字符。

文件内容示例:

  

Fisika(vanaf Grieks,\ u03C6 \ u03C5 \ u03C3 \ u03B \ u03BA \ u03CC \ u03C2,   \“Natuurlik \”,en \ u03C6 \ u03C3 \ u03B9 \ u03C2,\“Natuur \”)死了   wetenskap van die Natuur

4 个答案:

答案 0 :(得分:5)

尝试使用:Regex.Unescape(string)

应该是正确的方法。

ATT。

答案 1 :(得分:4)

不要使用@符号 - 这会将字符串解释为100%文字。把它拿走,一切都会好起来。

修改

我的回复可能有点仓促。我想你要问的是:当从文件中读取时,我怎样才能让C#将文字字符串'\ n'转换为换行符(类似于其他转义文字的问题)。

答案是:你自己写的。您需要搜索“\\ n”并将其转换为“\ n”。请记住,在C#中,编译器而不是语言将字符串更改为实际文字,因此没有一些库调用来执行此操作(实际上可能存在 - - 有人看起来很快,很快。)

修改

啊哈!找到了!看哪:

http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.unescape.aspx

答案 2 :(得分:0)

由于您正在从文件中读取字符串,因此\ n不会被读取为unicode字符,而是作为两个字符\和n读取。

我想说你可能需要搜索一个替换函数来将字符串“\ n”转换为它的unicode字符'\ n',等等。

答案 3 :(得分:0)

我认为没有任何简单的方法可以做到这一点。因为词法分析器的工作是解析文字。

我会尝试通过CodeDOM生成和编译一个类,其中插入的字符串为常量。它不是很快,但会完全逃脱。