在新行中打印字符串(C#)

时间:2014-08-07 12:32:45

标签: c# .net string

我有类似的奇怪要求:

string a = @"test content {1} test content {2}"

打印时,我需要输出

test content {1}

test content {2}

所以,我尝试将\r\n附加到字符串,但它打印如下:

string a = "test content {1}\r\n test content {2}\r\n"

输出

test content {1}\r\n test content {2}\r\n

为什么会出现这种情况?有什么想法吗?

6 个答案:

答案 0 :(得分:3)

问题出在@之前的string开始。

它告诉编译器逃避string跟随,所以事实上就是这样:

string s = "test content {1}\\r\\ntest content {2}"

删除@,它会起作用。

答案 1 :(得分:2)

关于原始字符串 - 在字符串中包含换行符,@很重要!

string a = @"test content {1} 

test content {2}";

输出将是:

test content

test content

答案 2 :(得分:1)

string a = "test content {1}" + Environment.NewLine + " test content {2}" + Environment.NewLine;

Environment.NewLine逃脱了一行。

答案 3 :(得分:1)

您正在使用字符串中的分隔符

这一事实
string a = "test content {1}\r\n test content {2}\r\n"

告诉代码将它们作为可显示的字符串处理 - 惊喜! 我建议你将字符串分成单独的组,比如

string a = "test content {1}" + Environment.NewLine + "test content {2}";

答案 4 :(得分:1)

我认为最好的方法是使用StringBuilder类,因为字符串是不可变的

StringBuilder strb = new StringBuilder();
strb.AppendLine("test content {1}");
strb.Append("test content {2}");
string a = strb.ToString();

答案 5 :(得分:0)

您可以使用String.Format()和Environment.NewLine:

String.Format("test content {}{0}test content {{2}}", Environment.NewLine)

Double {0}用于转义此字符。 {{1}}插入Environment.NewLine字符串。