2017-04-23 41 views
-1

我正在開發一個Android應用程序,並且我有一個獲取字符串作爲輸入的方法,並將其顯示在屏幕上。問題在於文字太寬,其中一些文字不在屏幕上。所以我想在每個標點符號之後將字符串拆分成新的行。Java - 如何在每個標點符號之後將字符串拆分爲新行?

所以,而不是有:"This is a string. It does not have new lines",我想有

"This is a string. 
It does not have new lines". 

有誰知道如何做到這一點?

+1

查找'\ p {} PUNCT在模式類的javadoc的'。 – assylias

回答

3

只是punctuation mark + new line character替換每punctuation mark

所以在這裏:

String str="This is a string. It does not have new lines"; 
str=str.replaceAll("\\.\\s?","\\.\n"); 
System.out.println(str); 

將打印字符串爲:

This is a string. 
It does not have new lines 
+0

非常感謝! – user3257736

+0

其他標點符號怎麼樣? – assylias

+0

@YCF_L是的,這是我犯的錯誤。我已經更新了答案。感謝您指出。 –

2

只有點

如果你想更換點,你可以使用():

String str = "This is a string. It does not have new lines."; 
str = str.replaceAll("\\.\\s?", "\\.\n"); 

我讓\\s?因爲你可以得到哪些沒有點之間的任何空間中的句子和字符:

This is a string.It does not have new lines 
//--------------^^ 

輸出

This is a string. 
It does not have new lines. 

所有的標點

標點符號:一個!"#$%&'()*+,-./:;<=>[email protected][\]^_ {|}〜`

如果你想你可以使用@assylias的解決方案提意見的標點符號,你可以使用\p{Punct}這樣的:

str = str.replaceAll("(\\p{Punct})\\s?", "$1\n"); 

所以你可以使用這個模式就像一羣(\p{Punct}),因爲當你更換了punctu通貨膨脹也被更換,因此要避免這種情況,你可以用這個組(punctuation) + new line這樣的替換:

str = str.replaceAll("(\\p{Punct})\\s?", "$1\n"); 

只有一些標點符號

如果你想使用只是一些標點符號,而不是全部,例如只需.,;,你可以使用[.,;]這樣的:

str = str.replaceAll("([.,;])\\s?", "$1\n"); 
+0

其他標點符號怎麼樣? – assylias

+0

2ed解決方案@assylias呢? –

+0

查看我的編輯@assylias –

相關問題