三大截取字符串的方法:slice、substring、substr
slice(start,end):[start,end) 从start位置开始,截取到end位置,end取不到
var str = "helloWorld!"
var s = str.slice(3);//未指定end参数,则返回从start到结尾的字符
console.log(s);//loWorld!
var s = str.slice(3, 6);//[3,6) 从start位置开始,截取到end位置,end取不到
console.log(s);//loW
// start参数为负数,则从字符串的尾部开始算起,-1为倒数第一个字符,-2为倒数第二个字符,从前往后截取
var s = str.slice(-3, 11);
console.log(s);//ld!
var s = str.slice(-4, -2);//end参数为负数,从字符串的尾部开始算起,从前往后截取
console.log(s);//rl
var s = str.slice(3, -3);
console.log(s);//loWor
substring(start, end):[start, end) 从start位置开始,截取到end位置,end取不到
var s = str.substring(3);//未指定end参数,则返回从start到结尾的字符
console.log(s);//loWorld!
var s = str.substring(3, 6);
console.log(s);//loW
// substring:若start参数为负数,则该参数会被改成0
var s = str.substring(-3, 11);//变为 str.substring(0, 11);
console.log(s);//helloWorld!
// 若start比end大,substring方法会在截取前先交换两个参数
var s = str.substring(3, -3);//变为 str.substring(-3, 3); -> str.substring(0, 3);[0, 3)
console.log(s);//hel
var s = str.substring(-4, -2);//(0, -2) -> (-2, 0) -> (0, 0)
console.log(s);//空字符串
substr(start, length):从start位置开始,截取length个字符
var s = str.substr(3);//未指定length参数,则返回从start到结尾的字符
console.log(s);//loWorld!
var s = str.substr(3,6);
console.log(s);//loWorl
var s = str.substr(-3, 11);//start参数为负数,则从字符串的尾部开始算起,-1为倒数第一个字符,-2为倒数第二个字符,从前往后截取
console.log(s);//ld!
console.log(s.length);//3
var s = str.substr(3, -3);//length如果传入负数相当于0
console.log(s);//为空
var s = str.substr(-4, -2);//length如果传入负数相当于0
console.log(s);//空
slice和substring:在传入的参数为负数时,不一样,传入参数为正数时,是等效的
slice、substring与substr的区别:
slice
- 若start参数为负,则从字符串的尾部开始算起,-1为倒数第一个字符,-2为倒数第二个字符,从前往后截取
- 若end参数为负,从字符串的尾部开始算起,从前往后截取
substring
- 若start参数为负数,则该参数会被改成0
- 若start比end大,substring方法会在截取前先交换两个参数
substr
- 若start参数为负数,则从字符串的尾部开始算起,从前往后截取
- 若length为负数相当于0
slice、substring与substr的相同点:
- 若未指定第二个参数值,则返回从start到结尾的字符