1
2

More than 3 years have passed since last update.

【Java】複数のreplace対象文字列を一度に置換する

Posted at

概要

Javaで文字列の置換を行うときは、replacereplaceAllを使うと思います。 replace対象が一単語であったり、正規表現でカバーできるなら問題ないのですが、これが複数の単語の場合どうでしょうか。例えば以下のようなケース。

文字列中の「"りんご", "みかん", "ぶどう"」を全て「"apple", "orange", "grape"」に置き換える

例えば、置き換えの対象組みをMapなどで持っておいて、for文でreplaceAllを繰り返し行えば良いと言えば良いのですが、もう少し簡潔に実装するやり方がないかと思い少し調べてみました。

対応方法

こちらのStackoverflowの記事にいくつか対応案がのせられています。個人的には、commons-langのライブラリのStringUtils.replaceEachを使う方法が良い感じがします。
replaceEachはcommons-langのドキュメントにある通り、置換対象と置換後の文字列を配列で設定することで、一回のメソッド実行で複数文字列の置換を実現しています。

実装サンプル

上記の概要に記載している果物の例を、StringUtils.replaceEachを使って実装した例です。実行結果はapple|orange|grape|apple|orange|grapeになります。

ReplaceEachSample.jaba
public class ReplaceEachSample {
    public static void main(String[] args) {
        String testWord = "りんご|みかん|ぶどう|りんご|みかん|ぶどう";
        String result = StringUtils.replaceEach(
                testWord,
                new String[]{"りんご", "みかん", "ぶどう"},
                new String[]{"apple", "orange", "grape"}
        );
        System.out.println(result);
    }
}
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2