我有一個字符串,並希望簡單地用字符串" --linebreak-- "
替換它中的所有換行符。Java正則表達式 - 使用字符串的replaceAll方法來替換換行符
難道是不夠的,只是寫:
string = string.replaceAll("\n", " --linebreak-- ");
我很困惑與它的正則表達式的一部分。我需要兩個斜槓來換行嗎?這夠好嗎?
我有一個字符串,並希望簡單地用字符串" --linebreak-- "
替換它中的所有換行符。Java正則表達式 - 使用字符串的replaceAll方法來替換換行符
難道是不夠的,只是寫:
string = string.replaceAll("\n", " --linebreak-- ");
我很困惑與它的正則表達式的一部分。我需要兩個斜槓來換行嗎?這夠好嗎?
不要使用正則表達式!。你只需要一個明文匹配來替換"\n"
。
使用replace()
與另一個替換一個字符串:
string = string.replace("\n", " --linebreak-- ");
注意replace()
仍然取代所有事件一樣,replaceAll()
- 不同的是,replaceAll()
使用正則表達式來進行搜索。
無需2 backslashes
。
String string = "hello \n world" ;
String str = string.replaceAll("\n", " --linebreak-- ");
System.out.println(str);
輸出= hello --linebreak-- world
使用正則表達式如下:
s.replaceAll("\\r?\\n", " --linebreak-- ")
這裏只有真正兩個用於UNIX和Windows操作系統的換行符。
新線有一個屬性
System.getProperty("line.separator")
這裏爲你的榜樣,
string.replaceAll("\n", System.getProperty("line.separator"));
剛剛添加該的完整性,因爲這2個反斜槓的事情是真實的。
參考@dasblinkenlight在下面的SO問題的答案(談論\ t,但它適用於\ n以及):
java, regular expression, need to escape backslash in regex
「有轉義序列的兩種解釋事情:第一當Java編譯器看到兩個斜槓時,它將用一個斜槓代替它們,當斜槓後面有一個斜槓時,Java用一個標籤替換它;當在下一個雙擊標籤時,斜線,Java將它獨立出來,但是,因爲兩個斜線被單斜線替代,正則表達式引擎會看到\ t,並將其解釋爲一個標籤。「
發生的另一件事是,第一個替換all的參數可以是一個扁平字符串或正則表達式。在字符串中,「\ n」被解釋爲文字,但如果您包含其他正則表達式符號,就像括號中的字符集一樣,那麼您需要額外的斜線才能獲得正確的字符串到正則表達式編譯器。 .....例如,「[\\ r \\ n] +」 – Rondo 2015-12-18 00:41:53
由於Java 8正則表達式引擎支持\R
,它代表任何行分隔符(稍微更多信息:https://stackoverflow.com/a/31060125/1393766)。
所以,如果你有機會到Java 8,你可以使用
string = string.replaceAll("\\R", " --linebreak-- ");
無論是作品。請參閱[這個問題]的答案(http://stackoverflow.com/questions/9113328/java-regular-expression-need-to-escape-backslash-in-regex)一個很好的解釋。 – 2012-03-24 04:06:14