我正在編寫一個代碼來替換字符串中的換行符。在Windows上,當我使用替換UNIX中的換行符
String.replaceAll(System.getProperty("line.separator"), "\\n");
這工作正常,但它在UNIX中失敗。
我應該在UNIX中使用什麼?
我正在編寫一個代碼來替換字符串中的換行符。在Windows上,當我使用替換UNIX中的換行符
String.replaceAll(System.getProperty("line.separator"), "\\n");
這工作正常,但它在UNIX中失敗。
我應該在UNIX中使用什麼?
\n
對於Unix是正確的。 Windows使用\r\n
,Mac使用\r
IIRC。
問題可能在於,作爲多平臺語言的Java會自動用系統的分隔符替換\n
。我不知道Java,但我認爲這是事實。
編輯:如果您發佈的代碼是您正在使用的代碼,我想我會看到問題。 String
是一類。它在Java中也是不可變的。這應該不是這樣:
String myStr = "abc\ndef";
myStr = myStr.replaceAll(/* params */);
在我的情況下,從某處我收到一個文本,我必須將其設置爲一個字符串。並且當在字符串中按下一個ENTER鍵時,它會出現兩行,所以想用\ n替換它,以便在執行新字符串時正確顯示。 當我在Windows中使用時,java代碼做它應該做的,但不是在Unix中。 所以我應該使用String.replaceAll(「\ n」,「\\ n」); ?? – jasmeet24 2012-07-12 06:30:12
接收文本可能包含的窗口行分隔符,所以僅更換\n
性格沒有影響。
如果您不知道文本的來源(或文本包含行分隔符的混合),以下方法可以提供幫助。首先將windows和mac line分隔符轉換爲unix分隔符,然後將unix分隔符轉換爲系統分隔符。
final String DOS = "\r\n", NIX = "\n", MAC = "\r";
String converted = original.replace(DOS, NIX)
.replace(MAC, NIX)
.replace(NIX, System.lineSeparator());
@ Tichodroma的編輯破壞了代碼。現在它說'\\ n'而不是'\ n'。 – C0deH4cker 2012-07-12 17:27:39