如何用回车创建一个String?

Bev*_*vor 20 java string

对于JUnit测试,我需要一个由多行组成的String.但我得到的只是一个单行字符串.我尝试了以下方法:

    String str = ";;;;;;\n" +
                 "Name, number, address;;;;;;\n" + 
                 "01.01.12-16.02.12;;;;;;\n" + 
                 ";;;;;;\n" + 
                 ";;;;;;";
Run Code Online (Sandbox Code Playgroud)

我也试过\n\r而不是\n.System.getProperty("line.separator")也不起作用.它产生一个\n字符串,没有回车.那我怎么解决呢?

Jon*_*eet 37

这取决于你的"多行"的含义.不同的操作系统使用不同的行分隔符.

在Java中,\r总是回车,并且\n是换行.在Unix上,\n对于换行就足够了,而Windows上的许多程序都需要\r\n.您可以使用平台默认换行符System.getProperty("line.separator")或使用String.format("%n")其他答案中提到的.

但实际上,您需要知道是否正在尝试生成特定于操作系统的换行符 - 例如,如果这是将作为特定协议的一部分传输的文本,那么您应该看到该协议认为是什么新队.例如,RFC 2822定义了一个行分隔符,即使你在Unix上运行也\r\n应该使用.所以关于背景.


Wor*_*red 9

我知道用Java生成换行符的最快方法是: String.format("%n")

当然,你可以把你想要的任何东西放在一起%n:

String.format("line1%nline2")

或者即使你有很多行:

String.format("%s%n%s%n%s%n%s", "line1", "line2", "line3", "line4")

  • 请注意,`%n`取决于平台. (3认同)

Bev*_*vor 0

感谢您的回答。我错过了我的数据存储在List<String>传递给测试方法的中。错误在于我将字符串放入了 ArrayList 的第一个元素中。这就是为什么我认为字符串只包含一行,因为调试器只向我显示了一个条目。