如何用回车创建一个String?

时间:2012-04-03 08:08:03

标签: java 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并且没有回车符。那我怎么解决呢?

6 个答案:

答案 0 :(得分:37)

这取决于“多行”的含义。不同的操作系统使用不同的行分隔符。

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

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

答案 1 :(得分:9)

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

当然,您可以在%n周围添加任何内容,例如:

String.format("line1%nline2")

或者即使你有很多行:

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

答案 2 :(得分:3)

尝试\r\n其中\r回车。另外,请确保您的输出没有新行,因为调试器可以显示\n\r\t等格式的特殊字符。

答案 3 :(得分:1)

这样做: 第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);

你需要做的就是这些。

答案 4 :(得分:1)

尝试追加字符.append('\r').append('\n');而不是字符串.append("\\r\\n");

答案 5 :(得分:0)

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