繁体   English   中英

如何用回车创建一个String?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM