可能重复:
Can I expand a string that contains C# literal expressions at runtime
如何在运行时转换从文件读取的转义字符串,例如
"Line1\nLine2"
进入其字面值:
Line1
Line2
令人惊讶的是,我找到了一个使用CSharpCodeProvider()执行相反here的示例,这似乎是更难转换。为了做相反的事情,我需要生成代码来定义一个类并在内存中编译它或执行一系列.Replace()调用,希望我不会错过任何转义序列。
答案 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();
}