簡體   English   中英

在UNIX中替換換行符

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM