文字列を Java という単語のサブパートではない条件に置き換えます


必要以上に文字列を置換します。 例えば

String input = "The blue house Theatres";
input = input.replace("the", "AAA");

出力は次のようになります:

 "AAA blue house AAAatres"

単語のサブパートであることを変更したくありません。



------------に答える------------

最初に、replace(literal, replace) の代わりに replaceAll(regex, replace) を使用してみてください。後者はリテラルでのみ機能するためです。つまり、式を使用することはできませんが、前者は正規表現を使用して一致を見つけます。

次の通常の e 式では、単語の境界を使用する必要があります。 \b\b \b は単語の境界を示します。

最後に、大文字と小文字を区別しない置換を行う場合は、式 (\b[tT]he\b など) で可能なケースを処理するか、式を大文字と小文字を区別しないモードに変更する必要があります。先頭に (?i) を付けて小文字にします。つまり、(?i)\bthe\b です。 [tT]he という表現は THE と一致しないことに注意してください。大文字と小文字を区別しないので、要件に応じてどちらかを選択する必要があります。

input = input.replaceAll("(?i)\\bthe\\b", "AAA"); を取得するすべてを使用します。

編集:

質問に対するあなたのコメントによると、単語の境界を使用するのではなく、前後の文字を探すだけです。これは、否定検索式を使用して実現できます。
p. (?i)(?

上記の表現は、!The, the, THE? に一致します。等ただし、シアターやエーテルなどは除きます。 if の場合、一致の前に ((?ない 必要があり、その後に
((?![ a-z ])).



------------に答える------------

単語境界で正規表現を使用する \b:

String input = "The blue house Theatres";
input.replaceAll("\bThe\b", "AAA");

タグ:

関連記事:

java: GSM モジュールからサーバーにデータを送信し、Android フォンからデータを取得する

PHP - Laravel の withInput() と withErrors() は空です