Java String.compareToIgnoreCase()
方法示例
原文: https://howtodoinjava.com/java/string/string-comparetoignorecase-example/
Java 字符串compareToIgnoreCase()
方法按字典顺序比较两个字符串,忽略大小写。 该方法与String.compareTo()
方法相同,但compareTo()
方法区分大小写。
1. String.compareToIgnoreCase()
方法
在compareToIgnoreCase()
方法中,按照字典顺序(字典顺序)忽略大小写比较两个字符串。 第一个字符串是在其上调用方法的String
对象本身。 第二个字符串是方法的参数。
此方法根据字符串中每个字符的 Unicode 值进行字符串比较。
1.1 方法返回类型
此方法的结果为整数值,其中:
- 正整数 – 表示按字典顺序字符串对象在变量字符串之后。
- 负整数 – 表示按字典顺序的字符串对象在变量字符串之前。
- 零 – 表示两个字符串相等。
1.2 方法实现
此方法使用CaseInsensitiveComparator
类,它是字符串类的静态内部类。 字符串比较是通过compare()
方法完成的。
public int compare(String s1, String s2) {
int n1 = s1.length();
int n2 = s2.length();
int min = Math.min(n1, n2);
for (int i = 0; i < min; i++) {
char c1 = s1.charAt(i);
char c2 = s2.charAt(i);
if (c1 != c2) {
c1 = Character.toUpperCase(c1);
c2 = Character.toUpperCase(c2);
if (c1 != c2) {
c1 = Character.toLowerCase(c1);
c2 = Character.toLowerCase(c2);
if (c1 != c2) {
// No overflow because of numeric promotion
return c1 - c2;
}
}
}
}
return n1 - n2;
}
2. Java String.compareToIgnoreCase()
示例
Java 程序以不区分大小写的方式比较两个字符串。 请注意,compareTo()
和compareToIgnoreCase()
方法的行为方式相同,只是后者不区分大小写。
public class Main
{
public static void main(String[] args)
{
System.out.println( "apple".compareTo("BANANA") ); //31
System.out.println( "apple".compareToIgnoreCase("banana") ); //-1
System.out.println( "cherry".compareTo("cherry") ); //0
System.out.println( "cherry".compareToIgnoreCase("CHERRY") ); //0
}
}
3. compareToIgnoreCase()
与equalsIgnoreCase()
了解compareToIgnoreCase()
与equalsIgnoreCase()
方法之间的主要区别。
compareToIgnoreCase()
在字典上进行比较(字典顺序)。equalsIgnoreCase()
检查两个字符串是否相等的字符串相等性。 虽然两者都不区分大小写。compareToIgnoreCase()
的返回类型是整数类型,它表示一个字符串大于,小于或等于另一个字符串。equalsIgnoreCase()
返回类型是布尔值,这意味着两个字符串相等或不相等。
4. Java String.compareTo()
示例
Java 程序使用String.compareTo()
方法比较字符串。
public class Main
{
public static void main(String[] args)
{
System.out.println( "apple".compareTo("banana") ); //-1 - apple comes before banana
System.out.println( "apple".compareTo("cherry") ); //-2 - apple comes before cherry
System.out.println( "cherry".compareTo("banana") ); //1 - cherry comes after banana
System.out.println( "cherry".compareTo("cherry") ); //0 - Both strings are equal
}
}
学习愉快!