0
我試圖根據設置更改字符串的行尾。基本上我有Strings,主要是LF結尾,很少有其他的東西,但是它發生了,我希望能夠改變他們到CRLF或CR如果問,或確保他們純粹是LF,如果這是問。源和目標平臺因操作系統而異,所以我想根據需要更改行結尾。根據設置在字符串中更改EOL
目前我使用此代碼做
if(this.eolCharacter.equalsIgnoreCase("CR")){
//replaces all \r\n with \r
//replaces all \n that are not preceded by \r with \r
return input.replaceAll("\\r\\n", "\r").replaceAll("\\n", "\r");
}else if(this.eolCharacter.equalsIgnoreCase("LF")){
//replaces all \r\n with \n
//replaces all \r with \n
return input.replaceAll("\\r\\n", "\n").replaceAll("\\r", "\n");
}else{
//replaces all \n that are not preceded by \r
//replaces all \r that are not followed by \n
return input.replaceAll("(?<!\\r)\\n", "\r\n").replaceAll("\\r(?!\\n)", "\r\n");}
我有點擔心,這段代碼可能是脆弱的還是我錯過了在正則表達式的東西,所以我想知道是否有可能一個原生的方式來做到這一點,它是Java 6,如果可能有幫助,我們使用Apache StringUtils。
感謝您的任何意見!
爲什麼?各種'readLine()'方法都可以正確處理所有已知的變體,如果你真的需要它,當前行結束符可以通過系統屬性獲得。整個想法是不在乎。 – EJP 2013-02-18 09:29:44
問題是字符串被寫入到文本文件中,然後在一些低級程序中需要這些文本文件,這些文件有時無法應付這些問題,而且過去我們遇到了問題。 – Markus 2013-02-18 09:48:09