1. ホーム
  2. java

[解決済み] 2つの文字列を、一方が他方を置き換えてしまわないように置き換えるにはどうしたらよいでしょうか?

2022-04-24 18:43:14

質問

例えば、次のようなコードがあるとします。

String word1 = "bar";
String word2 = "foo";
String story = "Once upon a time, there was a foo and a bar."
story = story.replace("foo", word1);
story = story.replace("bar", word2);

このコードが実行された後 story は次のようになります。 "Once upon a time, there was a foo and a foo."

逆の順番に置き換えても同様の問題が発生します。

String word1 = "bar";
String word2 = "foo";
String story = "Once upon a time, there was a foo and a bar."
story = story.replace("bar", word2);
story = story.replace("foo", word1);

の値は story は、次のようになります。 "Once upon a time, there was a bar and a bar."

私の目標は story"Once upon a time, there was a bar and a foo." どうすれば実現できるのでしょうか?

どのように解決するのですか?

を使用します。 replaceEach() メソッドから Apache Commons StringUtils :

StringUtils.replaceEach(story, new String[]{"foo", "bar"}, new String[]{"bar", "foo"})