欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > > 文章正文

字符串处理中substring()和substr()的比较,substringsubstr

来源: javaer 分享于  点击 26393 次 点评:80

字符串处理中substring()和substr()的比较,substringsubstr


javascript

stringObject.substring(start[,stop])

用于提取字符串中介于两个指定下标之间的字符。返回一个新的字符串,该字符串值包含 stringObject 的一个子字符串,其内容是从 start 处到 stop-1 处的所有字符,其长度为 stop 减 start。

var str = 'abcdefg';
var str2 = str.substring(2,4);//下标从0开始,返回的字符串长度为:4-2,返回结果:cd
var str3 = str.substring(4,2);//返回结果:cd,与str2相同,返回前交换了start和end的值
var str4 = str.substring(2);//返回结果:cdefg
var str5 = str.substring(-2);//返回:abcdefg
1. 不能接受负的参数,直接返回了整个字符串。
2. 返回的子串包括 start 处的字符,但不包括 stop 处的字符。
3. 如果 start 比 stop 大,那么该方法在提取子串之前会先交换这两个参数,如str3。
4. 如果没有stop参数,返回结果从下标start到字符串结束。

stringObject.substr(start[,len])

在字符串中抽取从 star下标开始的指定len长度的字符。返回一个新的字符串,包含从 stringObject 的 start(包括 start 所指的字符) 处开始的 len 个字符。如果没有指定 len,那么返回的字符串包含从 start 到 stringObject 的结尾的字符。

var str = 'abcdefg';
var str2 = str.substr(2,4);//下标从0开始,返回的字符串长度为:4,返回结果:cdef
var str3 = str.substr(4,2);//返回的字符串长度为:2,返回结果:ef
var str4 = str.substr(2);//返回结果:cdefg
var str5 = str.substr(-2);//返回结果:fg
var str6 = str.substr(-2,10);//要返回的长度是10,但返回结果:fg
var str7 = str.substr(-2,-10);//要返回的长度是-10,返回空字符串
1. 要抽取的子串的起始下标。必须是数值。如果是负数,那么该参数声明从字符串的尾部开始算起的位置。也就是说,-1 指字符串中最后一个字符,-2 指倒数第二个字符,以此类推。
2. 重要事项:ECMAscript 没有对该方法进行标准化,**因此反对使用它**。在某些浏览器中start下标使用负值,直接返回了全部字符串。

substring()和substr()只有在参数为一个正数时,取得的效果才相同。

mysql

mysql中的substring()和substr()无区别。

说明 substring() substr()
从pos开始到字符串结束 substring(str,pos) substr(str,pos)
从pos开始到字符串结束 substring(str FROM pos) substring(str FROM pos)
从pos开始取len个字符 substring(str,pos,len) substr(str,pos,len)
从pos开始取len个字符 substring(str FROM pos FOR len) substr(str FROM pos FOR len)

1. 字符串下标pos从1开始。
2. pos可设置为负数,同js的substr()。
3. 如果没有取得结果,返回空字符串。

java

java.lang.String类中只有substring()方法。

public String substring(int beginIndex) {
    if (beginIndex < 0) {
        throw new StringIndexOutOfBoundsException(beginIndex);
    }
    int subLen = value.length - beginIndex;
    if (subLen < 0) {
        throw new StringIndexOutOfBoundsException(subLen);
    }
    return (beginIndex == 0) ? this : new String(value, beginIndex, subLen);
}

public String substring(int beginIndex, int endIndex) {
    if (beginIndex < 0) {
        throw new StringIndexOutOfBoundsException(beginIndex);
    }
    if (endIndex > value.length) {
        throw new StringIndexOutOfBoundsException(endIndex);
    }
    int subLen = endIndex - beginIndex;
    if (subLen < 0) {
        throw new StringIndexOutOfBoundsException(subLen);
    }
    return ((beginIndex == 0) && (endIndex == value.length)) ? this
            : new String(value, beginIndex, subLen);
}
1. beginIndex小于0会抛出StringIndexOutOfBoundsException异常
2. beginIndex大于字符串长度会抛出StringIndexOutOfBoundsException异常
3. endIndex大于字符串长度会抛出StringIndexOutOfBoundsException异常
4. 要得取的字符串长度小于0,会抛出StringIndexOutOfBoundsException异常

StringUtils

特指org.apache.commons.lang3.StringUtils类

StringUtils里的substring()方法要灵活的多,也不需要考虑异常的抛出问题

public static String substring(String str, int start){
    ...
}

public static String substring(String str, int start, int end) {
...
}
1. start下标可以为负数,效果和js的substr()相同。
2. end下标也可以为负数,这是独有的。

相关文章

    暂无相关文章

用户点评