2017-04-23 5 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

ルック:

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

は、として文字列を出力します。 – assylias

答えて

3

だけpunctuation mark + new line characterておきpunctuation markを交換してください。だからここ

:PatternクラスのJavadocの中に `\ pを{} PUNCT`ため

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のソリューションを使用することができ、すべての句読点をしたい場合は、あなたが使用することができますあなたはそれpunctu交換するときので

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

だからあなたは、グループ(\p{Punct})のように、このパターンを使用することができます。このような\p{Punct} ationがそうこれを避けるために、あなたはこのグループのような(punctuation) + new lineに置き換えることができ、また、置き換えられます。あなただけのいくつかの句読点ではなく、すべての例を使用したい場合は

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

のみいくつかの句読点

だけ.,;、あなたはこのように[.,;]を使用することができます。

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

他の句読記号はどうですか? – assylias

+0

2dソリューションについて@assyliasはどうですか? –

+0

私の編集@assyliasを確認してください –

関連する問題