substr(),slice(),substring()比较;

//startIndex:开始位置

//endIndex:结束位置

//count:数量

/*用法*/

/*slice(startIndex, endIndex):*/

/*substring(startIndex,endIndex)*/

/*substr(startIndex,count)*/

var s = 'ABCDEFGH';

/*start*/

console.log(s.substr(1)); //"BCDEFGH"

console.log(s.slice(1)); //"BCDEFGH"

console.log(s.substring(1)); //"BCDEFGH"

/*end*/

/**/

/*start*/

console.log(s.substr(-2)); //"GH",会把startIndex的负值加上参数的长度

console.log(s.slice(-2)); //"GH",会把startIndex的负值加上参数的长度

console.log(s.substring(-2)); //"ABCDEFGH",会把startIndex的负值自动转换成0

/*end*/

/**/

/*start*/

console.log(s.substr(1, 3)); //"BCD",startIndex=1,count=3个

console.log(s.slice(1, 3)); //"BC",startIndex=1,endIndex=3

console.log(s.substring(1, 3)); //"BC",startIndex=1,endIndex=3

/*end*/

/**/

/*start*/

console.log(s.substr(3, 1)); //"D",开始位置为3,数量为1个

console.log(s.slice(3, 1)); //""

console.log(s.substring(3, 1)); //"BC",startIndex和endIndex的值互换进行查找

/*end*/

/**/

/*start*/

console.log(s.slice(-3, -1)); //"FG",负值加上参数的长度进行查找

console.log(s.substring(-3, -1)); //""

/*end*/

/**/

/*start*/

console.log(s.slice(-3, -5)); //""

console.log(s.substring(-3, -5)); //""

/*end*/

/**/

/*start*/

console.log(s.slice(-3, -5)); //""

console.log(s.substring(-3, -5)); //""

/*end*/

/**/

/*start*/

console.log(s.slice(5, -2)); //"F"

console.log(s.substring(5, -2)); //"ABCDE"

/*end*/

/**/

/*start*/

console.log(s.substr(-2, 2)); //"GH"

console.log(s.slice(-2, 2)); //""

console.log(s.substring(-2, 2)); //"AB"

/*end*/

/**/

总结:

substring如果有负值, 则会被强制转换成0;如果endIndex < startIndex, 会将它们交换进行输出.

slice如果有负值, 则x = x + string.length;如果endIndex < startIndex, 不会进行交换输出.

substr最好理解, 如果第一个参数是负值, 则startIndex = startIndex + string.length; 第二个参数代表数量, 出现负值代表不输出.

你可能感兴趣的:(substr(),slice(),substring()比较;)