2011-05-04 96 views
4

可能重复:
Can I expand a string that contains C# literal expressions at runtimeC# - 如何将转义字符串转换为文字字符串?

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

"Line1\nLine2" 

成其文字值:

Line1 
Line2 

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

+0

我认为他的意思是把Line1 \ nLine2放入'“Line1 \ nLine2”'中。 – Ryan 2011-05-04 19:51:13

+1

你的目标是什么?如果在代码中包含一个像'string s =“Line \ nLine2”;'这样的语句,然后在内存中运行时编译并运行它,那么变量s包含您想要创建的内容。 – Cheeso 2011-05-04 19:51:52

回答

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(); 
} 
2

CSharpCodeProvider更换转义值听起来像它肯定可以在这里做的伎俩。但是,在使用之前我会问2个问题:是否需要为,正好是 C#字符串文字语法,并且是输入文件是否可信?

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

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

+0

我正在使用正则表达式,将它们从源代码复制到测试它们,然后通过修改粘贴它们。因为它们是正则表达式,所以它们需要精确地来回翻译。这被用于一个肮脏的小工具来简化这个过程。 – Brandon 2011-05-04 21:09:12

+0

这是正确的答案。 这不是重复的,CodeDom的回答对于Ken给出的原因是有点荒谬的。 – Seth 2015-07-27 22:52:12

相关问题