C# - 如何将转义字符串转换为文字字符串?

时间:2011-05-04 19:48:36

标签: c# string-literals

  

可能重复:
  Can I expand a string that contains C# literal expressions at runtime

如何在运行时转换从文件读取的转义字符串,例如

"Line1\nLine2"

进入其字面值:

Line1
Line2

令人惊讶的是,我找到了一个使用CSharpCodeProvider()执行相反here的示例,这似乎是更难转换。为了做相反的事情,我需要生成代码来定义一个类并在内存中编译它或执行一系列.Replace()调用,希望我不会错过任何转义序列。

2 个答案:

答案 0 :(得分:2)

CSharpCodeProvider听起来肯定能在这里解决问题。但是,在使用之前我会问两个问题:是否需要完全 C#字符串文字语法,并且输入文件是否可信?

CSharpCodeProvider显然提供了C#编译器的语法,但在我看来,通过这条路径将某些代码注入到您的进程中相对容易。

Javascript字符串文字语法与C#字符串文字语法非常接近,.NET包含一个JavaScriptSerializer类,可以解析此类字符串文字,而无需将其作为代码注入正在运行的进程。

答案 1 :(得分:0)

将转义值替换为\n

static void Main(string[] args)
{
    var test = "Line1\\nLine2";

    // Line1\nLine2
    Console.WriteLine(test);

    // Line1
    // Line2
    Console.WriteLine(test.Replace("\\n", Environment.NewLine));

    Console.ReadKey();
}
相关问题