1. 概要

この短いチュートリアルでは、Javaで文字列が特定のパターンで終わっているかどうかを確認する方法について詳しく説明します。

まず、コアJavaを使用したソリューションを検討することから始めます。 次に、外部ライブラリを使用して同じことを実現する方法を紹介します。

2. Stringクラスの使用

簡単に言えば、 String は、特定の文字列が特定のサブ文字列で終わっているかどうかを確認するための複数の便利なオプションを提供します。

各オプションを詳しく見てみましょう。

2.1. String# endsWithメソッド

この方法は通常、この目的のために導入されます。 Stringオブジェクトが別の文字列で終わっているかどうかを確認する最も簡単な方法を提供します

それでは、実際の動作を見てみましょう。

public static boolean usingStringEndsWithMethod(String text, String suffix) {
    if (text == null || suffix == null) {
        return false;
    }
    return text.endsWith(suffix);
}

endsWithはnullセーフではないことに注意してください。 したがって、 NullPointerException を回避するために、最初にtextsuffixnullでないことを確認する必要があります。

2.2. String# matchs Method

一致は、目的を達成するために使用できるもう1つの優れた方法です。 文字列が特定の正規表現と一致するかどうかをチェックするだけです。

基本的に、私たちがする必要があるのは、ユースケースに適切に機能する正規表現を指定することだけです。

public static boolean usingStringMatchesMethod(String text, String suffix) {
    if (text == null || suffix == null) {
        return false;
    }
    String regex = ".*" + suffix + "$";
    return text.matches(regex);
}

ご覧のとおり、文字列 text の末尾( $ )にあるサフィックスに一致する正規表現を使用しました。 次に、正規表現をmatchesメソッドに渡しました。

2.3. String# regionMatchesメソッド

同様に、 regionMatches メソッドを使用して、中心的な質問に対処できます。 文字列部分が指定された文字列と完全に一致する場合はtrueを返し、そうでない場合はfalseを返します

それでは、例を使ってこれを説明しましょう。

public static boolean usingStringRegionMatchesMethod(String text, String suffix) {
    if (text == null || suffix == null) {
        return false;
    }
    int toffset = text.length() - suffix.length();
    return text.regionMatches(toffset, suffix, 0, suffix.length());
}

toffset は、文字列内のサブ領域の開始オフセットを示します。 したがって、 text が指定されたサフィックスで終わるかどうかを確認するには、toffsettextの長さから長さを引いたものに等しい必要がありますサフィックスの。

3. Patternクラスの使用

または、 Pattern クラスを使用して、文字列がパターンで終わるかどうかをチェックする正規表現をコンパイルできます。

さらに面倒なことをせずに、前のセクションで指定したのと同じ正規表現を再利用しましょう。

public static boolean usingPatternClass(String text, String suffix) {
    if (text == null || suffix == null) {
        return false;
    }
    Pattern pattern = Pattern.compile(".*" + suffix + "$");
    return pattern.matcher(text).find();
}

上記のように、 Pattern は、文字列の終わりを示す前の正規表現をコンパイルし、それを文字列textと照合しようとします。

4. ApacheCommonsLangの使用

Apache Commons Lang は、文字列操作用のすぐに使用できるユーティリティクラスのセットを提供します。 これらのクラスの中に、StringUtilsがあります。

このユーティリティクラスには、次のような興味深いメソッドが付属しています。 で終了します。 これ文字のシーケンスがnullセーフな方法でサフィックスで終わっているかどうかをチェックします

ここで、StringUtils.endsWithメソッドの使用例を見てみましょう。

public static boolean usingApacheCommonsLang(String text, String suffix) {
    return StringUtils.endsWith(text, suffix);
}

5. 結論

この記事では、文字列が特定のパターンで終わっているかどうかを確認するさまざまな方法について説明しました。

最初に、組み込みのJavaクラスを使用してこれを実現するいくつかの方法を見ました。 次に、ApacheCommonsLangライブラリを使用して同じことを行う方法を説明しました。

いつものように、この記事で使用されているコードは、GitHubにあります。