如何用回车创建一个String?
对于JUnit测试,我需要一个由多行组成的String。 但我得到的只是一个单行字符串。 我尝试了以下方法:
String str = ";;;;;;\n" + "Name, number, address;;;;;;\n" + "01.01.12-16.02.12;;;;;;\n" + ";;;;;;\n" + ";;;;;;";
我也试过\n\r
而不是\n
。 System.getProperty(“line.separator”)也不起作用。 它在String中生成一个\n
而没有回车符。 那我怎么解决呢?
这取决于你所说的“多行”。 不同的操作系统使用不同的行分隔符。
在Java中, \r
\n
始终是回车符, \n
是换行符。 在Unix上,只需\n
就足以换行了换行符,而Windows上的许多程序都需要\r\n
。 您可以使用平台默认换行符使用System.getProperty("line.separator")
或使用其他答案中提到的String.format("%n")
。
但实际上,您需要知道是否正在尝试生成特定于操作系统的换行符 – 例如,如果这是将作为特定协议的一部分传输的文本,那么您应该看到该协议认为是什么新队。 例如, RFC 2822定义了\r\n
的行分隔符, 即使您在Unix上运行,也应该使用它 。 所以关于背景。
我知道在Java中生成换行符的最快方法是: String.format("%n")
当然你可以把你想要的任何东西放在%n
周围,如:
String.format("line1%nline2")
或者即使你有很多行:
String.format("%s%n%s%n%s%n%s", "line1", "line2", "line3", "line4")
尝试\r\n
其中\r
是回车符。 还要确保输出没有新行,因为调试器可以以\n
, \r
, \t
等forms显示特殊字符。
这样做:第1步:你的字符串
String str = ";;;;;;\n" + "Name, number, address;;;;;;\n" + "01.01.12-16.02.12;;;;;;\n" + ";;;;;;\n" + ";;;;;;";
第2步:只需将所有“\ n”替换为“%n”,结果如下所示
String str = ";;;;;;%n" + "Name, number, address;;;;;;%n" + "01.01.12-16.02.12;;;;;;%n" + ";;;;;;%n" + ";;;;;;";
注意我刚刚用“%n”代替“\ n”
第3步:现在只需调用format()
str=String.format(str);
这就是你要做的一切。
谢谢你的回答。 我错过了我的数据存储在List
,并传递给测试方法。 错误是我将字符串放入ArrayList的第一个元素。 这就是为什么我认为String只包含一行,因为调试器只显示了一个条目。
尝试追加字符.append('\r').append('\n');
而不是String .append("\\r\\n");