startsWith 和 endsWith

startsWith(String, int)

判断字符是否以prefix开始

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 也就是 Integer.MAX_VALUE
    if((toffset < 0) || (toffset > value.length - pc)){
        return false;
    }

    while(--pc >= 0){
        if(ta[to++] != pa[po++]){
            return false;
        }
    }

    return true;
}

startsWith(String)

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

endsWith(String)

判断字符是否以suffix结尾

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

总结

“abcde”.endsWith("") ==> 返回true

"abcde".startsWith("") ==> 返回true

方法参数prefix 和 suffix 为null 时会抛出NullPointerException

代码注释的那块代码在次体现出了JDK的严紧,作为coder的我表示汗颜

//Note: toffset might be near -1 >>> 1 也就是 Integer.MAX_VALUE
boolean result = (toffset > value.length - pc);

//平时我作的判断 在toffset 和 pc 非常大的时候 极有可能发生整数溢出啊!!!!!!!!!
boolean result2 = (toffset + pc) > value.length;

三个方法最核心的方法也就是startsWith(String, int) ,真的是很巧妙。我什么时候能构思出这样的代码呢?????????

results matching ""

    No results matching ""