Java - 如何在每个标点符号后将字符串拆分为新行?

时间:2017-04-23 08:35:38

标签: java regex

我正在开发Android应用程序,我有一个方法,它将String作为输入,并将其显示在屏幕上。问题是文字太宽, 其中一些消失了。所以我想在每个标点符号后将字符串拆分成新行。

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

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

有谁知道怎么做?

2 个答案:

答案 0 :(得分:4)

只需将punctuation mark替换为punctuation mark + new line character

所以这里:

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

将String打印为:

This is a string.
It does not have new lines

答案 1 :(得分: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.

所有标点符号

标点符号 !"#$%&'()*+,-./:;<=>?@[\]^_ {|}〜“

之一

如果您想要所有标点符号,可以在评论中使用@assylias提及的解决方案,您可以像这样使用\p{Punct}

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

所以你可以像组(\p{Punct})一样使用这个模式,因为当你替换它时标点符号也会被替换,所以为了避免这种情况,你可以用这个组(punctuation) + new line代替它:< / p>

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

只有一些标点符号

如果您只想使用一些标点符号,而不是仅仅使用.,;,则可以使用[.,;],如下所示:

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