2011-11-13 6 views
5

単語の後に句読点を削除する必要があります。たとえば、word?!wordに、string:stringに変更する必要があります。Javaで単一の単語に続くすべての句読点を削除するにはどうすればよいですか?

編集:アルゴリズムでは、文字列の最後にある句読点のみを削除する必要があります。 String内の句読点はそのままにしておきます。たとえば、doesn't;doesn'tになります。

+0

有効な他の位置に句読点を表示することはできますか?言ってやるがいい、 ":テスト"という言葉があれば、そのマークは残っているのか、それとも取り替えられるのだろうか?基本的には、すべてのマークを削除しているのですか、言葉の最後だけですか? – Bryan

答えて

2

正規表現を使用して文字列を変更できます。

String resultString = subjectString.replaceAll("([a-z]+)[?:!.,;]*", "$1"); 

私は'が端にあり、それは句読点として使用される場合の知っている何の「言葉」はありません。だから、この正規表現はあなたのために働くでしょう。

+0

文字列に1つの単語が含まれていて、その目的が*末尾の*句読点文字を削除する場合は、式を簡略化することができますが、OPは明らかになりませんでした... – bobbymcr

+0

bobbymcr後ろの句読点だけを削除しようとしました。この場合、式はどのように単純化できますか? – user1044680

+0

それは動作します、ありがとうございます。 – user1044680

5

正規表現を受け入れる方法replaceAll(...)を使用してください。

String s = "don't. do' that! "; 
s = s.replaceAll("(\\w+)\\p{Punct}(\\s|$)", "$1$2"); 
System.out.println(s); 
関連する問題