js截取字符串操作slice、substring 、substr
slice和sustring
相同点: 使用方式相同,都接受两个参数【起始位置和结束位置】,截取的字符串包含起始位置的值,但不包含结束位置的值。若结束位置参数缺省,默认为字符串长度值。
不同点:对传入参数的负数值处理方式不同,slice是把负数理解为从字符串末尾往前计数。substring是直接把负数当0处理,并将小的值作为起始位置,大的为结束位置。
substr
接受两个参数【起始位置和截取长度】,若截取长度缺省则默认截取到字符串最后一个值。若起始位置为负数则理解为从字符串末尾往前计数。
示例:
1 var str = '如何使用js截取字符串'; //字符串str.length长度为11 2 //分析:从位置1开始截取,一直到位置3,但不包含位置3的内容 3 console.log(str.slice(1, 3));//何使 4 //分析:-1相当于'字'的位置 ,除了从末尾算起,也可以理解为负数值加上字符串值(-3+11=8),故如下表达式可以理解为str.slice(8,10);若出现开始位置大于结束位置则输出为空 5 console.log(str.slice(-3, -1));//字符 6 //分析:从位置0开始截取,一直到位置5,但不包含位置5的内容 7 console.log(str.substring(0, 5));//如何使用j 8 //分析:-5理解为0,0小于2,则0为其实位置,2为结束位置,相当于str.substring(0,2) 9 console.log(str.substring(2, -5));//如何 10 //分析:2为起始位置,4为截取长度值 11 console.log(str.substr(2,4));//使用js 12 //分析:2为起始位置,截取长度缺省,默认截取到最后一个值 13 console.log(str.substr(2));//使用js截取字符串 14 //分析:-7理解为从末尾往前算,相当于'j' 15 console.log(str.substr(-7,4));//js截取
注:三种方式都不改变原始字符串,且要注意slice【用于字符串】和splice【用于数组的添加或删除,返回删除项目,此方法会改变原始数组】,两者就差一个p,但使用场景完全不同。
arrObj.splice(index,delnum,addItem1,addItem2,addItem3)
arrObj为数组对象;index规定删除或添加的位置,若为负数则从后面往前算;delnum为删除数目;addItemx为添加的对象,可以为多个
var arr=['tony','mary','alex','jack'] var a=arr.splice(2,0,'tina'); console.log(a);//[] console.log(arr);//['tony','mary','tina','alex','jack'] var b=arr.splice(-1,1,['cc','gg']); console.log(b);//jack console.log(arr)//['tony','mary','tina','alex',['cc','gg']]