共同学习Java源码--常用数据类型--String(八)

   public boolean regionMatches(int toffset, String other, int ooffset,
            int len) {
        char ta[] = value;
        int to = toffset;
        char pa[] = other.value;
        int po = ooffset;
        // Note: toffset, ooffset, or len might be near -1>>>1.
        if ((ooffset < 0) || (toffset < 0)
                || (toffset > (long)value.length - len)
                || (ooffset > (long)other.value.length - len)) {
            return false;
        }
        while (len-- > 0) {
            if (ta[to++] != pa[po++]) {
                return false;
            }
        }
        return true;

    }

这个方法的重载方法在第六篇里进行了说明。不一样的地方就是缺少了个布尔值参数,不再对大小写是否敏感进行判断,这个方法就是判断字符串中的某一部分字符是否相等,而且大小写完全敏感。

    public boolean startsWith(String prefix, int toffset) {
        char ta[] = value;
        int to = toffset;
        char pa[] = prefix.value;
        int po = 0;
        int pc = prefix.value.length;
        // Note: toffset might be near -1>>>1.
        if ((toffset < 0) || (toffset > value.length - pc)) {
            return false;
        }
        while (--pc >= 0) {
            if (ta[to++] != pa[po++]) {
                return false;
            }
        }
        return true;
    }

这个方法很重要而且很常用,是判断某个字符串是否以另外一个字符串为开头。这个方法有两个参数,第一个是要判断的前缀字符串,第二个是本字符串的开始下标。

首先判断本字符串的开始下标是否小于0以及本字符串开始下标是否大于两个字符串的长度之差,如果判断失败则直接返回false。

然后进入循环,从本字符串的起始下标开始,判断本字符串和参数字符串每一个元素是否相等,如果有一个字符不相等直接返回false,循环的次数就是参数字符串的长度。

    public boolean startsWith(String prefix) {
        return startsWith(prefix, 0);
    }

这个方法是上面方法的重载方法,将本字符串起始下标变为0,也就是从本字符串的第0个元素开始匹配。

    public boolean endsWith(String suffix) {
        return startsWith(suffix, value.length - suffix.value.length);
    }

这个方法同样很重要,是判断本字符串是否以参数字符串为结尾,实现方式是调用startsWith方法,参数是目标字符串,起始下标是本字符串长度减去参数字符串的长度,也就是从这个差额处开始判断,所以判断的是本字符串结尾是否和参数字符串相等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值