[英]How to create a String with carriage returns?
对于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
等形式显示特殊字符。
这样做:第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);
这就是你要做的一切。
尝试追加字符.append('\\r').append('\\n');
而不是String .append("\\\\r\\\\n");
谢谢你的回答。 我错过了我的数据存储在List<String>
,并传递给测试方法。 错误是我将字符串放入ArrayList的第一个元素。 这就是为什么我认为String只包含一行,因为调试器只显示了一个条目。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.