最近做项目的时候,字符串截取一直用的是substr()方法,有时候需要截取的内容是中间部分的话就很麻烦,需要分两次,第一次截取前半部分,第二次在第一次的基础上截取后半部分。写了几次之后总觉得没对,应该还有更适合的方法,百度之后发现原来还有一个叫做substring()的方法。这里做一下比较总结。先来看啊可能它们之间的定义吧。
substr(start,length)
定义:substring() 方法用于提取字符串中介于两个指定下标之间的字符。
参数 | 描述 |
---|---|
start | 必需。一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置。 |
stop |
可选。一个非负的整数,比要提取的子串的最后一个字符在 stringObject 中的位置多 1。 如果省略该参数,那么返回的子串会一直到字符串的结尾。 |
返回值:一个新的字符串,包含从 stringObject 的 start(包括 start 所指的字符) 处开始的 length 个字符。如果没有指定 length,那么返回的字符串包含从 start 到 stringObject 的结尾的字符。
substring(start,stop)
定义:substring() 方法用于提取字符串中介于两个指定下标之间的字符。
参数 | 描述 |
---|---|
start | 必需。一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置。 |
stop |
可选。一个非负的整数,比要提取的子串的最后一个字符在 stringObject 中的位置多 1。 如果省略该参数,那么返回的子串会一直到字符串的结尾。 |
返回值:一个新的字符串,包含从 stringObject 的 start(包括 start 所指的字符) 处开始的 length 个字符。如果没有指定 length,那么返回的字符串包含从 start 到 stringObject 的结尾的字符。
下面用几个列子说明区别和注意点:
var number = "1234567890";
console.log(number.substring(0)); --> "1234567890"
console.log(number.substring(10)); --> ""
console.log(number.substring(20)); --> ""//如果start大于length,则返回空""
console.log(number.substring(-5));--> "1234567890"
console.log(number.substring(-8));--> "1234567890"
console.log(number.substring(-1,2));--> "12"
console.log(number.substring(-1,-2));--> ""//如果 start 或 end 为负数,那么它将被替换为 0
console.log(number.substring(5,2));--> "345"//如果 start 比 end 大,那么该方法在提取子串之前会先交换这两个参数
console.log(number.str(0));-->"1234567890"
console.log(number.str(10));-->""
console.log(number.str(20));-->""//如果start大于length,则返回空""
console.log(number.str(-1));-->"0"
console.log(number.str(-10));-->"1234567890"//如果start为负数,则start=str.length+start
console.log(number.str(1,2));-->"23"
console.log(number.str(1,0));
console.log(number.str(1,-3));-->""//如果 length 为 0 或负数,将返回一个空字符串