2012-04-03 49 views
17

對於JUnit測試,我需要一個由多行組成的字符串。但我得到的是一個單行的字符串。我試過如下:如何用回車符創建一個字符串?

String str = ";;;;;;\n" + 
       "Name, number, address;;;;;;\n" + 
       "01.01.12-16.02.12;;;;;;\n" + 
       ";;;;;;\n" + 
       ";;;;;;"; 

我也試過\n\r,而不是\n。 System.getProperty(「line.separator」)不起作用。它會在String中產生一個\n並且不會返回回車符。那我該如何解決呢?

+1

我不是一個Java的傢伙,但只是爲了幫助你在這裏我想了回車正確的順序是** \ r \ n ** – 2012-04-03 08:11:18

+0

你在哪裏說它不包含新行?在調試器或輸出文件中? – 2012-04-03 08:31:45

+0

問題不清楚,我們看看接受的答案。 – Manu 2014-04-14 11:18:17

回答

0

感謝您的回答。我錯過了我的數據存儲在傳遞給測試方法的List<String>中。錯誤的是我把字符串放入ArrayList的第一個元素。這就是爲什麼我認爲字符串只包含一行,因爲調試器只顯示一個條目。

3

嘗試\r\n其中\r是回車。此外,還要確保您的輸出沒有新的生產線,因爲調試器可以顯示你的\n形式,\r\t等特殊字符

+0

這也行不通。現在我有一個包含\ r \ n而不是新行的字符串。 – Bevor 2012-04-03 08:19:47

+1

你認爲它不包含新行的地方?在調試器或輸出文件中? – 2012-04-03 08:25:59

10

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

String.format("line1%nline2")

或者即使你有很多線路:

任何你想要圍繞 %n

當然,你可以把

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

+0

嗯,我仍然得到一個班輪。 – Bevor 2012-04-03 08:25:05

+3

請注意,'%n'取決於平臺。 – 2014-04-10 15:45:50

33

這取決於你的意思是「多行」。不同的操作系統使用不同的行分隔符。

在Java中,\r總是回車,而\n是換行符。在Unix上,只需\n就足夠用於換行,而Windows上的許多程序需要\r\n。您可以在平臺默認換行符中使用System.getProperty("line.separator")或使用String.format("%n"),如其他答案中所述。

不過說真的,你要知道你是否是試圖產生特異性OS-換行符 - 例如,如果這是這是會爲一個特定的協議的一部分將要發送的文字,那麼你應該看什麼該協議被認爲是一個換行符。例如,RFC 2822定義了一個\r\n的行分隔符,即使您正在Unix上運行,也應該使用。所以這都是關於上下文的。

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步:現在只需調用格式()

str=String.format(str); 

這就是你所要做的。

0

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

相關問題