我的编程空间,编程开发者的网络收藏夹
学习永远不晚

详解JS截取字符串的三个方法substring,substr,slice

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

详解JS截取字符串的三个方法substring,substr,slice

js中有三个截取字符的方法,分别是substring()、substr()、slice(),平时我们可能都用到过,但总是会对这些方法有点混淆,特别是substring()和substr(),连方法名都差不多,下面就具体来看一下区别。

相同点

这三个方法都可以对字符串进行截取,并且返回一个新的字符串,也就是不会对原字符串进行修改 。

这里 > 表示控制台输入,< 表示控制台输出,下同:

//chrome控制台
> var a = '0123456789'
< undefined
> a.substr(1,5)
< "12345"
> a
< "0123456789"  //没有发生改变

不同点

这三个方法的不同之处在于参数不同。

substring

substring() 方法用于提取字符串中介于两个指定下标之间的字符。

语法

string.substring(start,stop)

参数

参数描述
​ ​start​​必需。一个 非负的整数 ,规定要提取的子串的第一个字符在string​​中的位置。
​ ​stop​​可选。一个 非负的整数 ,比要提取的子串的最后一个字符在​string​​中的位置多 1。 如果省略该参数,那么返回的子串会一直到字符串的结尾。

说明

1.substring() 方法返回的子串包括 start 处的字符,但不包括 stop 处的字符。

//chrome控制台
> var a = '0123456789'
< undefined
> a.substring(1,5)
< "1234"

2.如果参数 start 与 stop 相等,那么该方法返回的就是一个空串(即长度为 0 的字符串)。

//chrome控制台
> var a = '0123456789'
< undefined
> a.substring(1,1)
< ""

3.如果 start 比 stop 大,那么该方法在提取子串之前会先交换这两个参数。

//chrome控制台
> var a = '0123456789'
< undefined
> a.substring(5,1) 
//=>a.substring(1,5)
< "1234"

4.如果 start 和 stop 有负数,那么会把该参数自动转为0,然后继续上述规则。

//chrome控制台
> var a = '0123456789'
< undefined
> a.substring(5,-1) 
//=> a.substring(5,0) 
//=> a.substring(0,5)
< "1234"

5.如果 start 和 stop 有正小数(负数直接进行第4条),那么会把该参数向下取整,然后继续上述规则。

//chrome控制台
> var a = '0123456789'
< undefined
> a.substring(5,2.5) 
//=> a.substring(5,2) 
//=> a.substring(2,5)
< "234"

6.如果 start 和 stop 有字符串,那么会先进行parseInt(),如果转换结果为NaN,那么就转换为0,其余情况继续上述规则。

//chrome控制台
> var a = '0123456789'
< undefined
> a.substring(5,'2.5') 
//=> a.substring(5,2) 
//=> a.substring(2,5)
< "234"
> a.substring(5,'ss') 
//=> a.substring(5,NaN) 
//=> a.substring(5,0) 
//=> a.substring(0,5)
< "01234"

其他情况就没有一一测试了,当然正常情况下尽量不要这么干,毕竟语法上已经规定了是整数。

substr

substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。

语法

string.substr(start,length)

参数

参数描述
start必需。要抽取的子串的起始下标。必须是数值。如果是负数,那么该参数声明从字符串的尾部开始算起的位置。也就是说,-1 指字符串中最后一个字符,-2 指倒数第二个字符,以此类推。
length可选。子串中的字符数。必须是数值。如果省略了该参数,那么返回从string的开始位置到结尾的字串。

说明

该方法与substring()最大的区别在于第二个参数是你需要截取字符串的长度,而不是位置。

1.substr() 方法返回的子串从 start 处的字符开始(包括)往后截取length长度,如果超过最末端就到最末端结束。

//chrome控制台
> var a = '0123456789'
< undefined
> a.substr(1,5)
< "12345"
> a.substr(1,15) 
// 只会到最末端,多了没用
< "123456789"

2.start可以取负值,表示从字符串尾部往头部开始数(从右到左,注意是从1开始,比如-1 指字符串中最后一个字符),但是截取长度还是从左到右,如果超过最末端就到最末端结束。

//chrome控制台
> var a = '0123456789'
< undefined
> a.substr(-4,2) 
// -4表示从右开始数第4个,就是'6',然后取2个长度的字符串,就是'67'
< "67"

3.如果length为负值,那么会直接当成0处理,最终返回""。

//chrome控制台
> var a = '0123456789'
< undefined
> a.substr(4,-2) 
//=> a.substr(4,0)
< ""

4.如果start或者length为小数,那么会截取小数部分。

//chrome控制台
> var a = '0123456789'
< undefined
> a.substr(1.2,5.2) 
//=> a.substr(1,5)
< "12345"

5.如果 start 和 length 有字符串,那么会先进行parseInt(),如果转换结果为NaN,那么就转换为0,其余情况继续上述规则。

//chrome控制台
> var a = '0123456789'
< undefined
> a.substr('aa','5') 
//=> a.substr(0,5)
< "01234"

slice

slice() 方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。

语法

string.slice(start,end)

参数

参数描述
start必须。要抽取的片断的起始下标。如果是负数,则该参数规定的是从字符串的尾部开始算起的位置。也就是说,-1 指字符串的最后一个字符,-2 指倒数第二个字符,以此类推。
end可选。紧接着要抽取的片段的结尾的下标。若未指定此参数,则要提取的子串包括start到原字符串结尾的字符串。如果该参数是负数,那么它规定的是从字符串的尾部开始算起的位置。

说明

该方法的两个参数均为位置坐标,和subtring比较像,区别就是该方法支持负数,并且不会交换位置,始终是从start到end,如果该区间不存在,那么返回''。

1.slice() 方法返回的子串包括 start 处的字符,但不包括end 处的字符。

//chrome控制台
> var a = '0123456789'
< undefined
> a.slice(1,5)
< "1234"

2.当start或者end为负值时,定位方式和substr一,从右往左数,从1开始。

//chrome控制台
> var a = '0123456789'
< undefined
> a.slice(1,-1)
//起始点从第1(包括)开始,结束点为从右往左数第1个(不包括)
< "12345678"

3.start到end的顺序始终是从左到右,如果最终start的位置在end的右边,那么返回''。

//chrome控制台
> var a = '0123456789'
< undefined
> a.slice(2,1)
//2所在的位置是'2',1所在的位置是'1',从2=>1,方向相反,返回为空
< ""
> a.slice(-2,1)
//-2所在的位置是'8',1所在的位置是'1',从8=>1,方向相反,返回为空
< ""
> a.slice(-2,-1)
//-2所在的位置是'8',-1所在的位置是'9',从8=>9,方向正常,返回为'8'
< "8"

4.其他情况和substring处理方式一致 。

//chrome控制台
> var a = '0123456789'
< undefined
> a.slice('xx','5.5')
// => a.slice(0,5)
< "01234"

总结一下

从上面测试得出结论,substring不支持负值,其他两种方式均支持负数表示,并且是从右边第一位开始计数。

substr的第二个参数是长度,这是和其他两种方式最大的不同之处。

slice的方向性比较强,永远是从start=>end对应左=>右。

以上结论均在最新谷歌浏览器上测试,IE和火狐未测试。

到此这篇关于详解JS截取字符串的三个方法substring,substr,slice的文章就介绍到这了,更多相关JS截取字符串内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

详解JS截取字符串的三个方法substring,substr,slice

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

php中使用substr截取字符串乱码的解决方法

这篇文章主要介绍php中使用substr截取字符串乱码的解决方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!php substr截取字符串乱码的解决办法:1、使用mbstring扩展库的“mb_substr()”截
2023-06-14

MySQL 中的字段截取与字符串截取方法详解

系列文章目录 文章目录 系列文章目录前言一、字段截取:二、字符串截取:总结 前言 在 MySQL 数据库中,有时我们需要截取字段或字符串的一部分进行查询、展示或处理。本文将介绍 MySQL 中常用的字段截取和字符串截取方法,
2023-08-17

JavaScript实现字符串截取的三个方法总结

在 JavaScript 中,可以使用 substr()、slice() 和 substring() 方法截取字符串。这篇文章就来通过一些示例和大家聊聊这些方法的具体操作,需要的可以参考一下
2023-02-27

Go语言字符串截取方法详解

Go语言字符串截取方法详解在Go语言中,字符串是不可变的字节序列,因此在进行字符串截取时需要使用一些方法来实现。字符串截取是获取字符串中的特定部分的一种常见操作,可以根据需求截取字符串的前几个字符、后几个字符或者从特定位置截取一定长度的字
Go语言字符串截取方法详解
2024-03-13

JS常用的4种截取字符串方法

在做项目的时候,经常会需要截取字符串,所以常用的方法有slice()、substr()、substring()、match()方法等,下面通过示例代码介绍四个方法的使用,感兴趣的朋友跟随小编一起看看吧
2023-02-05

Shell字符串截取的详细方法

一、Linux shell 截取字符变量的前8位,有方法如下: 1.expr substr “$a” 1 82.echo $a|awk ‘{print substr(,1,8)}'3.echo $a|cut -c1-84.echo $5.e
2022-06-04

js常用的截取字符串方法有哪些

JavaScript中常用的字符串截取方法有以下几种:1. `substring(start, end)`:截取字符串的一部分,从索引start开始到索引end结束,包括start索引但不包括end索引。2. `slice(start, e
2023-08-29

JS字符串截取出现的bug以及解决方式

之前在获取元素属性时,踩了个坑,记录一下,下面这篇文章主要给大家介绍了关于JS字符串截取出现的bug以及解决方式,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
2022-12-08

Shell字符串截取的实现方法(非常详细)

Shell 截取字符串通常有两种方式:从指定位置开始截取和从指定字符(子字符串)开始截取。从指定位置开始截取这种方式需要两个参数:除了指定起始位置,还需要截取长度,才能最终确定要截取的字符串。 既然需要指定起始位置,那么就涉及到计数方向的问
2022-06-04

JS把字符串转成json对象的三种方法示例详解

这篇文章主要介绍了js 把字符串转成json对象的三种方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-05-17

JS字符串分割方法整理汇总示例讲解(3种截取方法和6个辅助方法)

JavaScript在开发中常常会需要截取字符串,而JS提供了slice()、substring()、substr()3种方法实现截取操作。另外还有字符串相关的6种辅助方法:indexOf()、lastIndexOf()、split()、join()、concat()、charAt()。
2023-02-11

详解Python3中字符串中的数字提取方法

逛到一个有意思的博客在里面看到一篇关于ValueError: invalid literal for int() with base 10错误的解析,针对这个错误,博主已经给出解决办法,使用的是re.sub 方法totalCount = '
2022-06-04

C语言实现短字符串压缩的三种方法详解

这篇文章主要和大家分享一下smaz,shoco,unisox2三种短字符串压缩算法,并分别探索它们各自的压缩率与压缩和解压缩性能,需要的可以参考一下
2022-11-13

使用MySQL从JSON字符串提取数据的方法详解

目录1. 背景知识2. 示例数据3. SQL 查询分析3.1 查询结构解析4. 查询结果5. 性能考虑6. 总结1. 背景知识jsON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,同时
使用MySQL从JSON字符串提取数据的方法详解
2024-10-22

编程热搜

目录