C#-如何将转义字符串转换为文本字符串?
可能重复:C#-如何将转义字符串转换为文本字符串?,c#,string-literals,C#,String Literals,可能重复: 如何在运行时转换从文件读取的转义字符串,例如 "Line1\nLine2" 转换为其文字值: Line1 Line2 令人惊讶的是,我发现了一个使用CSharpCodeProvider()执行相反操作的示例,这似乎是更困难的转换。为了做相反的事情,我似乎需要生成代码来定义一个类并在内存中编译它,或者执行一系列.Replace()调用,希望我不会错过任何转义序列。将转义值替换为\n static void Main(string[] args) { var test =
如何在运行时转换从文件读取的转义字符串,例如
"Line1\nLine2"
转换为其文字值:
Line1
Line2
令人惊讶的是,我发现了一个使用CSharpCodeProvider()执行相反操作的示例,这似乎是更困难的转换。为了做相反的事情,我似乎需要生成代码来定义一个类并在内存中编译它,或者执行一系列.Replace()调用,希望我不会错过任何转义序列。将转义值替换为
\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();
}
CSharpCodeProvider听起来确实可以做到这一点。但是,在使用它之前,我会问两个问题:它是否需要精确的C#字符串文字语法,以及输入文件是否可信 CSharpCodeProvider显然提供了C#编译器的确切语法,但在我看来,通过这种途径向您的进程注入一些代码相对比较容易
Javascript字符串文字语法与C字符串文字语法非常接近,并且.NET包含一个类,该类可以解析此类字符串文字,而无需将其作为代码注入正在运行的进程。我认为他的意思是将
“Line1\\nLine2”
转换为“Line1\nLine2”
。您的目标是什么?如果包含一个类似于string s=“Line\nLine2”的语句代码>在您的代码中,然后编译并运行它,在内存中运行时,变量s包含您要创建的内容。我正在处理正则表达式,从源代码复制它们以测试它们,然后将它们粘贴回并进行修改。因为它们是正则表达式,所以需要来回精确翻译。这是一个肮脏的小工具,用来简化这个过程。这是正确的答案。这不是一个重复和代码的答案是有点荒谬的原因肯给出。