//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; 第二个参数代表数量, 出现负值代表不输出.