java - 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;
}
解决方案
有些字符仅以小写形式存在,有些仅以大写形式存在。例如,在德国,我们有字符“ß”,它是小写的。它没有大写版本。
我认为在其他语言中,同样的情况也可能发生在相反的方向上。
推荐阅读
- mongodb - 尝试保存到 mongodb 时身份验证失败
- java - Java 只更新 jre 而不是 jdk
- javascript - 警告:失败的道具类型:道具`exercise`在`EditExercise`中标记为必需,但其值为`undefined`
- python - 如何使用 Zelle 的 graphics.py 在窗口中分层 GraphicsObjects?
- flutter - Flutter - 触发另一个小部件方法哪个小部件在另一个文件中
- http - rustls HTTP 请求响应 301
- javascript - 如何在没有内联脚本的情况下实现 google reCaptcha?
- flutter - 如何为平板电脑设置横向?
- css - 为什么这种媒体查询样式应用低于其指定阈值?
- nat - NAT 错误 1002 后面的蓝色大按钮服务器