我正在开发Android应用程序,我有一个方法,它将String作为输入,并将其显示在屏幕上。问题是文字太宽, 其中一些消失了。所以我想在每个标点符号后将字符串拆分成新行。
所以,我不想拥有:"This is a string. It does not have new lines"
,而是希望
"This is a string.
It does not have new lines".
有谁知道怎么做?
答案 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");