[英]Replacing newline character in UNIX
我正在編寫代碼以替換字符串中的換行符。 在Windows上,當我使用
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 */);
收到的文本可能包含Windows行分隔符,因此僅替換\\n
字符無效。
如果您不知道文本的來源(或文本包含行分隔符的混合物),則可以使用以下方法。 首先將Windows和Mac行分隔符轉換為UNIX分隔符,然后將UNIX分隔符轉換為系統分隔符。
final String DOS = "\r\n", NIX = "\n", MAC = "\r";
String converted = original.replace(DOS, NIX)
.replace(MAC, NIX)
.replace(NIX, System.lineSeparator());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.