Java compareToIgnoreCase() 方法
compareToIgnoreCase() 方法用于按字典顺序比较两个字符串,不考虑大小写。
语法
int compareToIgnoreCase(String str)
参数
str -- 要比较的字符串。
返回值
- 如果参数字符串等于此字符串,则返回值 0;
- 如果此字符串小于字符串参数,则返回一个小于 0 的值;
- 如果此字符串大于字符串参数,则返回一个大于 0 的值。
实例
public class Test { public static void main(String args[]) { String str1 = "STRINGS"; String str2 = "Strings"; String str3 = "Strings123"; int result = str1.compareToIgnoreCase( str2 ); System.out.println(result); result = str2.compareToIgnoreCase( str3 ); System.out.println(result); result = str3.compareToIgnoreCase( str1 ); System.out.println(result); } }
以上程序执行结果为:
0 -3 3
关于这个方法,不管参数是对象还是字符串,最终要比较的都是两个字符串的不同,以下称调用方法那边的为原字符串,方法参数里的为参数字符串。
这个方法分为两种比较方式:
1、不同的字符在较短字符串长度之内时
返回值=原字符串与参数字符串中第一个不同字符相差的ASCII码值,为原减参。
例子如下:
此时返回值为3,是d的ASCII码(100)减去了a的ASCII码值(97)得到或者D与A相差得到的。
注意:只比较第一个不同(这个方法里不考虑字母大小写)的字符,后面的s和i也不一样但不会进行比较了,无关字母大小写所以只比较相同格式下相差的ASCII码值。
2、不同的字符在较短字符串长度之外时
返回值=原字符串与参数字符串相差的字符个数,原字符串长度大时为正,反之为负。
例子如下:
此时返回值为6,是str1相比str2多出来的字符个数。
注意:此时只比较位数,而无关ASCII码值,并非是S(s)的ASCII码值减去0的ASCII码值,在参数字符串前面字符和原字符串一样时,返回值就是两者相差的字符个数,即使改变后面的字符也不会影响到返回的值,比如String str1="jAva233666",此时结果仍是6。