字符串处理中substring()和substr()的比较,substringsubstr
分享于 点击 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下标也可以为负数,这是独有的。
相关文章
- 暂无相关文章
用户点评