本文主要介绍Java中,使用Apache Commons字符串比较的几种方法(equals() 、compareToIgnoreCase()、compare()、compareIgnoreCase()、equalsAny()或equalsAnyIgnoreCase()),以及相关字符串比较的示例代码。

1、使用Apache Commons的equals()实现字符串比较

StringUtils类的equals()方法是String类方法equals()的增强版,它会处理null值:

assertThat(StringUtils.equals(null, null))
.isTrue();
assertThat(StringUtils.equals(null, "equals method"))
.isFalse();
assertThat(StringUtils.equals("equals method", "equals method"))
.isTrue();
assertThat(StringUtils.equals("equals method", "EQUALS METHOD"))
.isFalse();

2、使用Apache Commons的equalsIgnoreCase()实现字符串比较

StringUtilsequalsIgnoreCase()方法返回一个布尔值。它与equals()类似,只是忽略了字符串中的字符大小写:

assertThat(StringUtils.equalsIgnoreCase("equals method", "equals method"))
.isTrue();
assertThat(StringUtils.equalsIgnoreCase("equals method", "EQUALS METHOD"))
.isTrue();

3、使用Apache Commons的equalsAny()和equalsAnyIgnoreCase()进行字符串比较

equalsAny()方法的第一个参数是一个字符串,后面是可以是多个参数,其中任何一个与第一个字符串大小写敏感匹配,则该方法返回true。否则,返回false:

 assertThat(StringUtils.equalsAny(null, null, null))
.isTrue();
assertThat(StringUtils.equalsAny("equals any", "equals any", "any"))
.isTrue();
assertThat(StringUtils.equalsAny("equals any", null, "equals any"))
.isTrue();
assertThat(StringUtils.equalsAny(null, "equals", "any"))
.isFalse();
assertThat(StringUtils.equalsAny("equals any", "EQUALS ANY", "ANY"))
.isFalse();

equalsAnyIgnoreCase()equalsAny()方法类似,只是忽略了大小写:

assertThat(StringUtils.equalsAnyIgnoreCase("ignore case", "IGNORE CASE", "any")).isTrue();

4、使用Apache Commons的compare()和compareIgnoreCase()实现

StringUtils类中的compare()方法相对于String类的compareTo()方法,能更好的处理null值,它通过将null小于非null来处理null值。两个null值被认为是相等的。

此外,这个方法可以用来排序一个字符串列表与null:

assertThat(StringUtils.compare(null, null))
.isEqualTo(0);
assertThat(StringUtils.compare(null, "abc"))
.isEqualTo(-1);
assertThat(StringUtils.compare("abc", "bbc"))
.isEqualTo(-1);
assertThat(StringUtils.compare("bbc", "abc"))
.isEqualTo(1);

compareIgnoreCase()方法的类似,只是它忽略了大小写:

assertThat(StringUtils.compareIgnoreCase("Abc", "bbc"))
.isEqualTo(-1);
assertThat(StringUtils.compareIgnoreCase("bbc", "ABC"))
.isEqualTo(1);
assertThat(StringUtils.compareIgnoreCase("abc", "ABC"))
.isEqualTo(0);

两个方法也可以与一个null值选项一起使用。第三个布尔参数,它决定null值是否应被认为是更少的。

如果nullIsLesstrue,则null值低于另一个字符串;如果nullIsLessfalse,则空值高于另一个字符串。例如:

assertThat(StringUtils.compare(null, "abc", true))
.isEqualTo(-1);
assertThat(StringUtils.compare(null, "abc", false))
.isEqualTo(1);

带有第三个布尔参数的compareIgnoreCase()方法与上面方法类似,只是忽略了大小写。

相关文档:Java使用==、equals()或compareTo()等方法进行字符串比较


推荐文档