关于js截取字符串函数 substr substring slice 的用法以及区别
1.substring( startIndex, endIndex )
返回从索引startIndex 开始 到索引 endIndex之前的字符串。
注意:
- 如果两个参数相等则返回空字符串
- 如果只传一个参数,那么将从该位置截取到字符串末尾
- 如果第一个参数 > 第二个参数,那么执行的过程中会判断两个参数的大小,然后从小的索引截取到大的索引
- 如果不传参数,那么将返回原字符串
- 如果其中一个参数是0,那么它将被当做0
let str = 'expression';
console.log( str.substring( 2, 5 ) ); // 'pre'
console.log( str.substring( 5, 2 ) ); // 'pre'
console.log( str.substring() ); // 'expression'
console.log( str.substring( 5, -3 ) ); // 'expre'
2.slice( startIndex, endIndex )
返回从索引startIndex 开始 到索引 endIndex之前的字符串。
用法与substring
很相似,主要看一下区别:
- 不会在执行过程中判断索引大小从而把小的放在前,如果第一个参数 > (字符串长度 - 1),那么将返回undefined
- 如果某个参数为负数,那么他将会加上字符串长度来计算,如果 startIndex 加上字符串长度之后还是负数,那么会默认从索引0开始截取
let str = 'expression';
console.log( str.slice( 15, 3 ) ); // undefined
console.log( str.slice( -19, -1 ) ); // 'expressio'
3.substr( startIndex, count )
从索引 startIndex 开始,截取 count 个字符串
注意:
- 如果startIndex >= 字符串的长度,那么将返回空字符串
- 如果startIndex是负数,那么加上字符串长度计算,如果还是负数,那么从索引0开始截取
- 如果是count 是个负数或者为0,那么将返回空字符串
- 如果未传 count 参数,那么将默认从索引 startIndex 截取到字符串末尾
let str = 'expression';
console.log( str.substr( 12, 3 ) ); // ''
console.log( str.substr( -7, 2 ) ); // 're'
console.log( str.substr( -20, 3 ) ); // 'exp'
console.log( str.substr( 5, 0 ) ); // ''
console.log( str.substr( 5 ) ); // 'ssion'