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

时间:2016-06-02 12:57:14

标签: c# string

我有一个字符串

var string = "I have a a string \\nThis is a new line\\nThis is another";

我想要的是

var string = "I have a a string \nThis is a new line\nThis is another";

我用过

string.Replace("\\","\");
Newline in constant

但是得到错误消息“Newline in constant”

2 个答案:

答案 0 :(得分:12)

常量错误中的换行符是由于"\"是C#中无效的字符串文字而引起的。您的意思是"\\"(表示一个文字\符号)。

"\\n"是一个字符串,其中包含1个文字\符号,后跟一个文字n字母。您需要获取换行符"\n"。这里没有\,它是转义序列。因此,将\\替换为\原则上无法正常使用。

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

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

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

C# demo的结果:

I have a a string 
This is a new line
This is another

答案 1 :(得分:12)

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

string.Replace("\\n","\n");

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