字符串处理中substring()和substr()的比较
2016-11-03 13:51
169 查看
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) |
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下标也可以为负数,这是独有的。
相关文章推荐
- 字符串处理截取slice、substring、substr的异同
- js字符串截取函数slice、substring和substr的比较
- JavaScript截取字符串的Slice、Substring、Substr函数详解和比较
- split() ,substring(),substr()字符串处理函数
- JavaScript中,提取子字符串方法:Slice、Substring、Substr的比较。
- JavaScript字符串处理:substring, substr, slice
- JavaScript截取字符串的Slice、Substring、Substr函数详解和比较
- js处理字符串的substr()slice()substring()match()replace()用法
- 几个常用的JavaScript字符串处理函数 split()、join()、substring()和indexOf()
- 用来获取子串的两个函数substr和substring用法比较
- vb与js中字符串处理函数的对应比较
- 几个常用的JavaScript字符串处理函数 - split()、join()、substring()和indexOf()
- 几个常用的JavaScript字符串处理函数 – split()、join()、substring()和indexOf()
- 几个常用的JavaScript字符串处理函数 – split()、join()、substring()和indexOf()
- 几个常用的javaScript字符串处理函数--split() .ion() .substring()和index()
- C# 3.0 Cookbook:一、字符与字符串处理(4):在比较两个字符串时控制大小写敏感性
- C# 3.0 Cookbook:一、字符与字符串处理(5):把一个字符串与另一个字符串的头部或尾部作比较
- 提供MQL4 中比较实用的两个字符串处理函数
- 几个常用的JavaScript字符串处理函数 - split()、join()、substring()和indexOf()
- 字符串处理函数strcpy和sprintf的效率比较