2016-04-18 120 views
-1

我正在創建一個小程序atm,我需要用符號f.e替換每個換行符。 「#」。 所以,如果我輸入這樣的文字:用另一個符號替換每個換行符

test1 
test2 
test3 

應該成爲

test1#test2#test3 

我試着這樣做:一些研究,我也試圖

String text2 = text.replaceAll("\\\\n", "#"); 

String text2 = text.replaceAll("\n", "#"); //text is the inputed text 

因爲有人說這與編譯器或idk有關。任何幫助表示讚賞!

+1

而過得好'text' ?事實上,它是否包含換行符?另外,'replace'就是你想要的; 'replaceAll'採用*正則表達式*。 –

+0

text是一個字符串變量,我從這樣的jTextPane獲取文本:textPane.getText()@CubeJockey – SyxDuLappen

回答

3

換行符與系統有關。在UNIX系統上,它是「\ n」;在Microsoft Windows系統上它是「\ r \ n」。所以最好讓你的代碼平臺獨立。

使用類似:

String text = rawText.replaceAll(System.lineSeparator(), "#"); 

普萊斯指出,System.lineSeparator()可從Java 1.7。

+1

此外,如果你不打算使用正則表達式語法,那麼你可以使用'replace'而不是'replaceAll'。這兩種方法都會替換*全部*搜索到的文本(它們之間的主要區別僅僅是正則表達式語法支持)。 – Pshemo

0

通過輸入\\來使用轉義反斜線。另請檢查回車\r\n

String test = "test1\ntest2\r\ntest3"; 
System.out.println(test.replaceAll("(\\n|\\r\\n)", "#")); 
0

replaceAll("\n", "#")應正常工作,如果你的線條潔具只有\n分開。如果它不起作用,那麼這意味着您的文本正在使用其他行分隔符,如\r,\u0085(下一行--NEL)或最可能的\r\n的組合。

由於replaceAll正在使用正則表達式語法來匹配我們可以使用的所有行分隔符\R(已添加到Java 8中的正則表達式引擎)。所以你可以試試。

String text2 = text.replaceAll("\\R", "#"); 

如果你不能使用Java 8(如在Android應用程序的情況下),你可以使用正則表達式,這將代表\r\n\n\r

String text2 = text.replaceAll("\r\n|\n|\r", "#"); 
//can be reduced to .replaceAll("\r?\n|\r", "#");