2012-05-19 29 views
20

replace()またはreplaceAll()という機能を使用して特定の文字列から特定の単語を削除しようとしていますが、別の単語の一部であってもこれらの単語がすべて削除されます。文字列から特定の単語を削除する

例:

String content = "is not like is, but mistakes are common"; 
content = content.replace("is", ""); 

出力:"not like , but mtakes are common"

所望の出力:"not like , but mistakes are common"

どのように私は、文字列からのみ単語全体を置き換えることができますか?

+0

もちろんJavaタグがある場合**これはJava ** –

+0

を使用する必要がありますか?文字列で?他の文字列を検索する必要がありますか? – UNECS

+0

あなたはすべての文字列のどの部分を置き換えたいのでしょうか、おそらく正規表現を使って作業を行うことができます –

答えて

36

heckが、

String regex = "\\s*\\bis\\b\\s*"; 
content = content.replaceAll(regex, ""); 

あなたがいないreplace(...)

  • \\bが境界
  • \\s*のSOPあなたの言葉を与え、正規表現を使用するreplaceAll(...)を使用する必要が覚えていますどんな白い削除されている単語の両側のスペース(これも削除したい場合)
+0

ありがとうございました=) –

+1

@MiDoBasha:あなたは歓迎です –

+0

残っている問題がまだ1つあります。文が 'dog is cat'だった場合、このコードは 'is'という単語の両側のスペースを削除してdogcatにします。私は 'content = content.replaceAll(regex、" ")'を書いて、最後のスペースをトリムする方が良いと思います – Jasir

0

"is"を ""で置き換えることができます。 1つ前のスペースと1つ後のスペースが1つのスペースに置き換えられています。

更新:

、それはまた別の「」のために「ある」と置き換えるか、文の中で「ある」最初のために働くようにします。最初のスペースと最初のスペースを空の文字列に置き換えます。

+1

は最初の "is"の文では機能しません。 –

+0

大文字のため特別にこのケースを処理する必要があるかもしれないので、複数の 'replaceAll()'呼び出しがうまくいくでしょうか? 'replaceAll("は\です "、"。 ");や最後のものをキャッチするためにsomesuchを含む... –

+1

あなたは両方とも正しいです。ありがとうございました。私はそのケースを含める答えを更新しました。文字列が "is"で終わる場合、そのケースも追加する必要があります。合計3に加えてください。また、Robが追加したように、大文字のケースも、replaceAllの追加呼び出しで考慮する必要があります。 –

5

content = content.replaceAll("\\Wis\\W|^is\\W|\\Wis$", "");

+0

正規表現の魔法を使うには 'replaceAll(...)'を 'replace(...) 'する必要はありませんか? –

+0

@HovercraftFullOfEels申し訳ありませんがテストしていません。テスト後に編集されました。 :) – Chip

関連する問題