これにより、「単語の一部」ではないアポストロフィも削除されます。
string = string.replaceAll("[^A-Za-z' ]+|(?<=^|\\W)'|'(?=\\W|$)", "")
.replaceAll(" +", " ").trim();
これは最初に、保持したい文字のリストにアポストロフィを追加するだけですが、ルックアラウンドを使用して単語内にないアポストロフィを見つけます。
I'm a ' 123 & 'test'
になるだろう
I'm a test
単一のアポストロフィが削除され、アポストロフィの折り返しがどのように削除されたかに注意してくださいtest
。ただし、I'm
保持されています。
次replaceAll()
は、複数のスペースを単一のスペースに置き換えることです。これは、入力に単一のアポストロフィがある場合に発生します。trim()
入力の最後に発生した場合に備えて、さらに への呼び出しが追加されました。
ここにテストがあります:
String string = "I'm a ' 123 & 'test'";
string = string.replaceAll("[^A-Za-z' ]+|(?<=^|\\W)'|'(?=\\W|$)", "").replaceAll(" +", " ").trim();
System.out.println(string);
出力:
I'm a test