截取字符串(slice)(substr)(substring)(split)

本文详细介绍了JavaScript中用于截取字符串的slice()、substr()和substring()方法,包括它们的参数用法、注意事项以及与split()方法的区别,通过实例演示了各种情况下的截取效果,帮助开发者理解这些方法的相似点和不同点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这我先定义一个字符串

let str = '123456789';

假如我要截取指定字符串567,有多种方法下列我将讲到其中的相同处与不同处并会写个总结(如有需要直接前往最下面)


slice()方法

slice(a,b),截取指定的下标,返回被截取的值不会改变原字符串,a为截取的开始下标,b为截取的结束下标,a,b都可以为负数从后往前数,当第一个参数大于第二个参数时,返回空

当没有参数时:

console.log(str.slice());

可以看到就把当前全部截取下来了

当有一个参数时:

console.log(str.slice(4));

可以看到从下标为4时后面全部截取出来了

当有两个参数时:

console.log(str.slice(4,7));

 到这里可能会有小伙伴好奇了,第二个参数为7那不是应该截取到下标为7的时候吗,这里要注意了slice()方法它是包头不包尾的,你可以看成数组一样左边是闭区间,右边是开区间

特殊情况

当第一个参数为负数时

console.log(str.slice(-2));

 当为负数时它就会从后往前数,因为只有一个参数就截取了从-2下标开始后面所有的

当两个参数都为负数时

console.log(str.slice(-4,-2));

 当两个都为负数时,一样的从后往前数,然后包头不包尾的截取

当第一个参数为正数时,第二个为负时也是一样的截取(这里就不放图了)

注意:

当第一个参数为负数,第二个参数为正时

console.log(str.slice(-2,4));

 结果会返回一个空值,

当第一个参数大于第二个参数时也会返回空值

 console.log(str.slice(5,4));


substr()方法

substr(a,b),a是截取的开始下标,b是截取的长度,a可以为负数从后往前数,b长度不能为负数,截取指定的下标与指定的个数,不会破坏原数组

当没有参数时也是一样的截取全部(这里也不放图了)

当有一个参数时:

console.log(str.substr(4));

可以看到跟slice方法一样从下标为4时开始截取后面所有的

当有两个参数时:

console.log(str.substr(4,3));

 可以看到第二个参数与slice方法不一样,这里第二个参数是你要截取的个数

当第一个参数为负数时:

console.log(str.substr(-2));

 在这只有一个参数时跟前面没有区别

当两个参数都为负数时

console.log(str.substr(-2,-1));

因为截取的个数不能为负数,所以这里会返回一个空值 

第一个参数为负,第二个参数为正时也是一样的(这里也不放图了)


substring()方法

substring(a,b),截取指定的下标,返回被截取的值不会改变原字符串,a为截取的开始下标,b为截取的结束下标,a,b都不能为负数,如果为负数时会等于0,当第一个参数大于第二个参数时,会自动调换位置再截取同样包头不包尾

这个方法当参数都为正时基本都与slice方法一样就不细写相同点了,可以看上面slice详解

不同点在于当第一个参数与第二个参数都为负时:

console.log(str.substring(-2,-1));

 返回的是一个空值,因为参数不能为负数,为负数时等于0,开始下标与结束下标都为0时自然就截取了一个空

当第一个为负数时

console.log(str.substring(-2,));

 因为两个参数都不能为负数,如果为负数时会等于0,所以就截取了全部

当第一个参数为负数,第二个参数为正时

console.log(str.substring(-2,4));

 因为开始下标为负数所以从0开始算,同样与slice一样包头不包尾

当第一个参数为正数,第二个为负数时就会截取当前那一个


split()方法

split(a),该方法比较特殊只有一个参数,a为被切割的字符串,返回的是一个数组

console.log(str.split(2));

 结果是2被截取掉了,然后把数字2前面的和后面的分割出来了

这个比较特殊重新写一个数组

let str = '123123';
console.log(str.split(2));

 结果就是把全部数字2截取掉了然后前后都分割开来成为字符串

当没有参数时截取的也是全部然后返回一个数组,数组里面是一个全部的字符串(这里也不放图了)

特殊情况:

当参数为“”空时:

console.log(str.split(""));

 结果就会把他们全部单独分割出来,因为字符串中间都会有空所以它把空当成了分割点


总结:

slice(a,b),截取指定的下标,返回被截取的值不会改变原字符串,a为截取的开始下标,b为截取的结束下标,a,b都可以为负数从后往前数,当第一个参数大于第二个参数时,返回空

substr(a,b),a是截取的开始下标,b是截取的长度,a可以为负数从后往前数,b长度不能为负数,截取指定的下标与指定的个数,不会破坏原数组

substring(a,b),截取指定的下标,返回被截取的值不会改变原字符串,a为截取的开始下标,b为截取的结束下标,a,b都不能为负数,如果为负数时会等于0,当第一个参数大于第二个参数时,会自动调换位置再截取同样包头不包尾

split(a),该方法比较特殊只有一个参数,a为被切割的字符串,返回的是一个数组(这个比较特殊建议看一看)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值