4

可能重复:
我可以在运行时扩展包含 C# 文字表达式的字符串吗

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

"Line1\nLine2"

成它的字面值:

Line1
Line2

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

4

2 回答 2

2

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

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

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

于 2011-05-04T20:07:37.887 回答
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();
}
于 2011-05-04T19:51:45.133 回答