我有一个字符串
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”
答案 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("\\","\")
给出编译错误的原因是因为反斜杠正在转义双引号,所以字符串继续到行的末尾,这是不允许的,除非它是一个逐字字符串(以一个字符串开头) @)。