在C#中的字符串中将\n替换为\n

Wel*_*ing 6 c# string

我有一个字符串

var string = "I have a a string \\nThis is a new line\\nThis is another";
Run Code Online (Sandbox Code Playgroud)

我想要的是什么

var string = "I have a a string \nThis is a new line\nThis is another";
Run Code Online (Sandbox Code Playgroud)

我用过

string.Replace("\\","\");
Newline in constant
Run Code Online (Sandbox Code Playgroud)

但得到错误消息"Newline in constant"

Wik*_*żew 13

常量错误中的换行符是由"\"C#中的无效字符串文字引起的.你必须有意思"\\"(表示一个文字\符号).

"\\n"是一个包含1个文字\符号的字符串,后跟一个文字n字母.你需要得到"\n"一个换行符.这里没有\,它是一个逃脱序列.因此,替换\\\,原则上不在这里工作.

如果你只想用换行替换所有\后跟n,你可以使用.Replace(@"\n", "\n"),其中@"\n"是一个查找文字+ 的逐字字符串文字,并替换为表示换行(LF)符号的转义序列.\n\n

此外,您可能希望使用将所有转义实体转换为其文字表示形式:Regex.Unescape

var s = "I have a a string \\nThis is a new line\\nThis is another";
Console.Write(Regex.Unescape(s));
Run Code Online (Sandbox Code Playgroud)

C#演示的结果:

I have a a string 
This is a new line
This is another
Run Code Online (Sandbox Code Playgroud)


juh*_*arr 13

你真正想要替换的是反斜杠,后跟字母n和换行符

string.Replace("\\n","\n");
Run Code Online (Sandbox Code Playgroud)

原因Replace("\\","\")是编译错误是因为反斜杠正在转义双引号,所以字符串继续到行的末尾,这是不允许的,除非它是一个逐字字符串(以@开头).