2016-11-27 47 views
3

我使用這個正則表達式由2個字符分割一條線分成多個組。獲得額外行使用行分隔符

string.replaceAll("(.{2})", "$1\r\n") 

這裏是一個例子。

像我輸入的輸入字符串是這樣

ABCDEFGHIJ 

和輸出我越來越喜歡這個

Output 
->AB 
->CD 
->EF 
->GH 
->IJ 
-> 

有沒有什麼辦法讓我沒有收到最後的空行?

回答

2

你有兩個選擇:

  • 手動從結果中去除新線
  • 您正則表達式更改爲:(.{2})(?!$)

現在正則表達式將捕獲所有對除了最後一個,而且你不會換一個新的線。

+0

它,因爲它只有一個參數,如果我跟着你 – kelly

+2

@kelly'不工作string.replaceAll( 「({2})(?!$)」)的replaceAll(字符串,字符串)錯誤string.replaceAll( 「({2})(?!$)」, 「$ 1 \ r \ n」)' – Maroun

1

其他辦法可以是:

String.join(System.lineSeparator(), string.split("(?<=\\G..)")) 

隨着string.split("(?<=\\G..)")你每兩個字符後拆分,但由於split在默認情況下刪除尾隨空字符串,你不會在你的結果得到它。所以"ABCD"成爲["AB", "CD"]陣列。

然後使用String.join(delimiter, elements)您可以加入從數組元素連接成一個字符串,它們之間指定的分隔符,在我們的例子OS行分隔符。

DEMO

+0

嗨@ Pshemo..Can請你告訴我一件事......我又讀文件像獲取與行分離器恰當拆分「\ n」個作爲輸入文件行分隔符之後提到在上面的示例。並使用行分隔符「\ r \ n」將文件分割成多個文件作爲輸出文件。但我正在接受一個額外的線路,就像我在問我的問題。任何建議? – kelly

+0

很抱歉,但你可以澄清你的問題嗎?我不確定你的意思是「像上面例子中提到的那樣再次讀取文件」,因爲沒有任何發佈的例子包含讀取文件,而只處理來自String的文本。我只能假設,通過分割文件,你的意思是添加行分隔符到字符串。無論如何,沒有看到[MCVE]我只能猜測你可以使用'println()'而不是'print()',它在打印文本之後添加行分隔符。在\ r \ n'中只處理'\ n'時,您可能會忘記'\ r'。這很難說。 – Pshemo