首页 > 解决方案 > Java字符串忽略大小写实现

问题描述

我正在阅读 java.lang.String 等于忽略大小写实现并试图弄清楚为什么在已经比较大写之后还有小写比较?是否存在重要的语言,大写可能不匹配但小写可能匹配?

// Code from java.lang.String class 
  public boolean regionMatches(boolean paramBoolean, int paramInt1, String paramString, int paramInt2, int paramInt3) {
    char[] arrayOfChar1 = this.value;
    int i = paramInt1;
    char[] arrayOfChar2 = paramString.value;
    int j = paramInt2;
    if (paramInt2 < 0 || paramInt1 < 0 || paramInt1 > this.value.length - paramInt3 || paramInt2 > paramString.value.length - paramInt3)
      return false; 
    while (paramInt3-- > 0) {
      char c1 = arrayOfChar1[i++];
      char c2 = arrayOfChar2[j++];
      if (c1 == c2)
        continue; 
      if (paramBoolean) {
        char c3 = Character.toUpperCase(c1);
        char c4 = Character.toUpperCase(c2);
// Why is java comparing to Lower case here
        if (c3 == c4 || Character.toLowerCase(c3) == Character.toLowerCase(c4))
          continue; 
      } 
      return false;
    } 
    return true;
  }

标签: javastringlocalization

解决方案


有些字符仅以小写形式存在,有些仅以大写形式存在。例如,在德国,我们有字符“ß”,它是小写的。它没有大写版本。

我认为在其他语言中,同样的情况也可能发生在相反的方向上。


推荐阅读