博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript 中的字符串切片操作(slice、substr、substring)
阅读量:5314 次
发布时间:2019-06-14

本文共 3299 字,大约阅读时间需要 10 分钟。

// 首先定义一个字符串 var str1 = 'Hello World!'

来看一下所需要传递的参数

slice(start,end)

substr(start,length)

subtring(start,stop)

注意:由于字符串是不可变的类型,所以这三个方法的返回值都是新的字符串

可以看出第一个参数都是start,所以

传入一个参数的时候

当这个参数是非负值 或者不传递参数时,返回的结果都一样

console.log(str1.slice(4))        //  o World!console.log(str1.substr(4))        //  o World!console.log(str1.substring(4))        //  o World!console.log(str1.slice(0))        //  Hello World!console.log(str1.substr(0))        //  Hello World!console.log(str1.substring(0))        //  Hello World!console.log(str1.slice())        //  Hello World!console.log(str1.substr())        //  Hello World!console.log(str1.substring())        //  Hello World!

注意,如果这个参数如果大于过等于字符串的长度,则返回值为空字符串

console.log(str1.slice(12))      //  ""console.log(str1.substr(12))      //  ""console.log(str1.substring(12))      //  ""

 当传递的参数为负值的时候:

console.log(str1.slice(-4))      //  rld!console.log(str1.substr(-4))      //  rld!console.log(str1.substring(-4))      //  Hello World!console.log(str1.substri ng(-6))      //  Hello World!console.log(str1.slice(-12))      //  Hello World!console.log(str1.substr(-12))      //  Hello World!console.log(str1.substring(-12))      //  Hello World!

由上述例子可以看出,如果传递的负值参数的绝对值大于或等于该字符串的长度,则会返回完整的字符串;如果传递的负值参数的绝对值小于该字符串的长度,slice() 和substr() 方法都会根据该值大小,倒叙截取字符串的长度,而对于substring(), 则无论传入的是什么负值参数,都是返回完整的字符串。

 

当传入两个参数时

slice(start, end) 根据传入参数均是下标,具体情况如下:

// 相同符号的参数,如果第二个参数小于等于第一个参数,则返回空字符串,比如:console.log(str1.slice(-1, -4))      //  ""console.log(str1.slice(5, 3))      //  ""// 第二个参数为0,或第一个参数大于等于字符串的长度,或第二个参数小于等于长度的负数(比如长度为12,第二个参数小于等于-12),则返回是空字符console.log(str1.slice(3, 0))      //  ""console.log(str1.slice(-5, 0))      //  ""console.log(str1.slice(12, 15))      //  ""console.log(str1.slice(-15, -12))      //  ""//  第二个参数大于第一个参数,则截取他们区间的元素,如:console.log(str1.slice(-4, -1))      //  "rld"console.log(str1.slice(3, 5))      //  "lo"// 不同符号的参数,正参数不变,负参数计算与长度的和,同样进行第二个参数与第一个参数进行比较,比如:console.log(str1.slice(3,-4))      // 相当于 str1.slice(3, 8)console.log(str1.slice(-5, 11))      // 相当于 str1.slice(7, 11)console.log(str1.slice(6, -11))      // 相当于 str1.slice(6, 1)

substr(start, length)  第一个参数是下标,第二个参数是要截取的长度

// 如果第二个参数为非正数,则一定返回空字符串console.log(str1.substr(4, -2))      //  ""console.log(str1.substr(3, -14))      //  ""console.log(str1.substr(-4, 0))      //  ""console.log(str1.substr(5, 0))      //  ""// 如果第一个参数为负数,则以该参数与字符串的长度的和为起始下标,截取第二个参数长度,直到截取超过长度范围console.log(str1.substr(-4, 3))      //  相当于 str1.substr(8,3)      即为 'rld'console.log(str1.substr(-3, 5))      //  相当于str1.substr(9, 5)     即为 'ld!'

substring(start, stop) 两个参数都是下标,那么这个方法与slice(start, end)的区别在哪呢?

// 在传入的参数为正数的时候,两个方法的返回值是一样的,如:console.log(str1.slice(4))      //  'o World!'console.log(str1.substring(4))      //  'o World!'console.log(str1.slice(3, 6))      //  'lo'console.log(str1.substring(3, 6))      //  'lo'// 在传入的参数为负数的时候,substring 会把负数参数换算成 0,如:console.log(str1.substring(-3))      // 相当于 str1.substring(0)    即为 'Hello World!'// 如果是两个参数中有一个为负数的话,则会将该负数参数换算成  0,并把该参数作为起始位置,另一个非负参数,作为终止位置,比如:console.log(str1.substring(-4, 5))      //  相当于 str1.substring(0, 5)    即为 'Hello'console.log(str1.substring(5, -6))      //  相当于    str1.substring(0, 5)    即为 'Hello'

 

 

参考资料:

JS中substr(),substring(),slice()区别 

javascript中String类的subString()方法和slice()方法 

转载于:https://www.cnblogs.com/yungiu/p/11497946.html

你可能感兴趣的文章
虚拟DOM
查看>>
自建数据源(RSO2)、及数据源增强
查看>>
关于View控件中的Context选择
查看>>
2018icpc徐州OnlineA Hard to prepare
查看>>
Spark的启动进程详解
查看>>
使用命令创建数据库和表
查看>>
机器视觉:SSD Single Shot MultiBox Detector
查看>>
201521123044 《Java程序设计》第1周学习总结
查看>>
MIT Scheme 的基本使用
查看>>
在16aspx.com上下了一个简单商品房销售系统源码,怎么修改它的默认登录名和密码...
查看>>
c++回调函数
查看>>
linux下Rtree的安装
查看>>
【Java】 剑指offer(53-2) 0到n-1中缺失的数字
查看>>
Delphi中ListView类的用法
查看>>
多米诺骨牌
查看>>
Linq 学习(1) Group & Join--网摘
查看>>
asp.net 调用前台JS调用后台,后台掉前台JS
查看>>
Attribute(特性)与AOP
查看>>
苹果手表:大方向和谷歌一样,硬件分道扬镳
查看>>
Competing Consumers Pattern (竞争消费者模式)
查看>>