如何用回车创建一个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");