1. 概述

在这个简短教程中,我们将深入讲解如何在Java中检查字符串是否以特定模式结束

首先,我们将从核心Java解决方案开始讨论,然后展示如何使用外部库来实现相同的功能。

2. 使用String

简单来说,StringJava API文档)提供了多种方便的方法来验证给定字符串是否以特定子字符串结尾。

让我们逐个查看这些选项。

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值。因此,在调用前我们需要确保textsuffix都不为null,以避免NullPointerException

2.2. String#matches方法

matches是另一个我们可以用来达成目标的方法。它只是检查一个字符串是否与给定的正则表达式匹配。

基本步骤是,我们需要指定适用于我们场景的正确正则表达式:

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

如上所示,我们使用了一个正则表达式,它匹配字符串text末尾的suffix(*$*)。然后,我们将正则表达式传递给了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是否以指定的suffix结尾,toffset应等于text长度减去suffix长度。

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. 使用Apache Commons Lang

Apache Commons Lang 提供了一套用于字符串操作的现成实用工具类。其中,我们找到了StringUtils类。

这个工具类提供了一个名为endsWith的有趣方法,它以安全的方式检查字符序列是否以后缀结束

现在,让我们演示一下StringUtils.endsWith方法的用法:

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

5. 总结

在这篇文章中,我们探讨了不同的方法来检查字符串是否以特定模式结束。

首先,我们看到了使用Java内置类实现这一功能的几种方式。然后,我们解释了如何使用Apache Commons Lang库来完成相同的操作。

如往常一样,本文中使用的代码可以在GitHub上找到。