我是靠谱客的博主 健壮口红,最近开发中收集的这篇文章主要介绍解析String中忽略大小写方法的原理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1. 解析String中忽略大小写方法的原理

方法初探

public boolean equalsIgnoreCase(String anotherString) {
    return (this == anotherString) ? true
        : (anotherString != null)
    && (anotherString.value.length == value.length)
        && regionMatches(true, 0, anotherString, 0, value.length);
}

可以看出 此方法 核心是 regionMatches方法 只要 他能运行 并且返回为true 此方法就返回为true

public boolean regionMatches(boolean ignoreCase, int toffset,
                             String other, int ooffset, int len) {
    char ta[] = value;
    int to = toffset;
    char pa[] = other.value;
    int po = ooffset;
    if ((ooffset < 0) || (toffset < 0)
        || (toffset > (long)value.length - len)
        || (ooffset > (long)other.value.length - len)) {
        return false;
    }
    while (len-- > 0) {
        char c1 = ta[to++];
        char c2 = pa[po++];
        if (c1 == c2) {
            continue;
        }
        if (ignoreCase) {

            char u1 = Character.toUpperCase(c1);
            char u2 = Character.toUpperCase(c2);
            if (u1 == u2) {
                continue;
            }

            if (Character.toLowerCase(u1) == Character.toLowerCase(u2)) {
                continue;
            }
        }
        return false;
    }
    return true;
}

假如比较 字符串 s1,s2 s1.equalsIgnoreCase(s2); 会来到 regionMatches方法中

regionMatches有五个参数:

  • ignoreCase – 如果为 true,则比较字符时忽略大小写。
  • toffset – s1字符串的起始位置。
  • other – 字符串参数。
  • ooffset – s2的哪个位置开始比较。
  • len – 要比较的字符数。

regionMatches(true, 0, anotherString, 0, value.length)方法的参数列表 表示 是要比较大小写并且都从起始位置开始比较

总结:如果字符串的指定子区域匹配字符串参数的指定子区域,则返回 true;否则返回 false。是否完全匹配或考虑大小写取决于 ignoreCase 参数。

最后

以上就是健壮口红为你收集整理的解析String中忽略大小写方法的原理的全部内容,希望文章能够帮你解决解析String中忽略大小写方法的原理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部