字符串截取函数slice, substring, substr
在日常项目需求中,常常会遇到需要截取字符串操作的工作,而ECMAScript为我们提供了原生的截取字符串的函数,而且提供了三个:slice, substring, substr。我们怎么判断在什么时候使用哪个字符串截取函数呢?
其实,只要搞清楚这三者的区别,就比较容易能够判断什么情况下,使用哪个字符串截取的函数了。
三者都是接受两个可选参数。
最简单的情况下,没有传入任何参数,则这三者没有任何区别,类似于=操作符,直接复制了一个字符串出来。
如果之传入一个参数,则直接取从参数开始到字符串结尾的字符串。遇到非正整数的参数,与两个参数的处理情况相同。
str.slice(start, end)
slice的参数start和end可接受任意非NaN数值的参数,取start到end之间的字符,不包含end。如果参数为负,则会自动加上str.length进行纠正,如果依然为负值,则修正为0。如果end值小于start则返回空字符串。
console.log("abcdefghij".slice(3,1)) // ''
console.log("abcdefghij".slice(-3,-1)) // 'hi'
console.log("abcdefghij".slice(1, 3)) // 'bc'
console.log("abcdefghij".slice(-20, -8)) // 'ab'
记住一个原则:如果end小于start,则返回空字符串。如果值为负数,加str.length纠正,依然为负,则调整为0。
str.substring(start, end)
也是接受任意数值的参数,如果参数为0或者NaN的话,会自动修正为0;如果end小于start的话,两者位置颠倒。取start到end之间的字符,不包含end。
console.log("abcdefghij".substring(3,1)) // 'bc'
console.log("abcdefghij".substring(-3,-1)) // ''
console.log("abcdefghij".substring(1, 3)) // 'bc'
console.log("abcdefghij".substring(-20, -8)) // ''
也有一个原则:就是两个参数当中较小的会自动调整当做start参数,任何非正整数,都会当做0处理。
str.substr(start, length)
从形参名称应该可以看出一点不同。substr第一个参数也是起始位置,但是第二个参数不是结束位置,而是需要截取多少个字符串。
start如果为负数,则与slice传入负数参数一样处理,让其自身加str.length进行纠正,如果还小于0,则当做0处理。
length如果为0或者负数,则直接返回一个空字符串。
console.log("abcdefghij".substr(-13)) // 'abcdefghij'
console.log("abcdefghij".substr(-13, 1)) // 'a'
console.log("abcdefghij".substr(0, -1)) // ''
console.log("abcdefghij".substr(-1, 3)) // 'j'
如此来看,就能够比较清楚的分辨出来三者之间的用法和区别了。
字符串截取函数slice, substring, substr的更多相关文章
- JS字符串截取函数slice(),substring(),substr()的区别
在JS中,slice().substring().substr()都有截取字符串的作用,那他们有哪些用法上的区别呢?如果你也有疑惑,这篇文章或许能够帮助到你. 一.substring() substr ...
- js字符串截取函数slice()、substring()、substr()
摘要 在js中字符截取函数有常用的三个slice().substring().substr()了,下面我来给大家介绍slice().substring().substr()函数在字符截取时的一些用法与 ...
- JavaScript中字符串截取函数slice()、substring()、substr()
在js中字符截取函数有常用的三个slice().substring().substr()了,下面我来给大家介绍slice().substring().substr()函数在字符截取时的一些用法与区别吧 ...
- 关于js的string的3个函数slice,substring,substr对比
slice,substring,substr三个函数都是截取字符串,但是对参数的处理有区别 参数处理相似的两个函数式slice和substring slice(start,end)和substring ...
- Mysql字符串截取函数SUBSTRING的用法说明
感觉上MySQL的字符串函数截取字符,比用程序截取(如PHP或JAVA)来得强大,所以在这里做一个记录,希望对大家有用. 函数: 1.从左开始截取字符串 left(str, length) 说明:le ...
- MySQL 字符串截取函数
MySQL 字符串截取函数:left(), right(), substring(), substring_index().还有 mid(), substr().其中,mid(), substr() ...
- (实用篇)多个PHP中文字符串截取函数
字符串截取是一个非常常见的编程任务,而往往带中文的字符串截取会经常用到.虽然不难,但是自己写函数实现又耗费时间,这里介绍一个比较好用的字符串截取函数,能够胜任基本的需求了 <?php funct ...
- 改造phpcms-v9自带的字符串截取函数
1.phpcms-v9自带的字符串截取函数在phpcms/libs/functions/global.func.php文件中: /** * 字符截取 支持UTF8/GBK * @param $stri ...
- 收藏几个支持中文的PHP字符串截取函数
字符串截取是一个非常常见的编程任务,而往往带中文的字符串截取会经常用到.虽然不难,但是自己写函数实现又耗费时间,这里介绍一个比较好用的字符串截取函数,能够胜任基本的需求了. <?php func ...
随机推荐
- 【java】运算符
Java的运算符,分为四类: 算数运算符.关系运算符.逻辑运算符.位运算符. 算数运算符(9):+ - * / % ++ -- 关系运算符(6):== != > >= ...
- 阅读<Video Test Pattern Generator v7.0>笔记
阅读<Video Test Pattern Generator v7.0>笔记 1.数据宽度的问题 TotalDataWidth的计算公式: 疑问:为什么TotalDataWidth后面需 ...
- python--BUG--python socket.error: [Errno 9] Bad file descriptor的解决办法
这个错误很明显 ,是因为关闭了套接字对象后,又再次去调用了套接字对象,此时套接字链接已经被关闭,不能再去调用,所以才会出现这种错误,复查一下代码,很快就可以解决.
- url参数的转码和解码
encodeURI(str) //转码 decodeURI(str)//解码
- PREV-42_蓝桥杯_九宫幻方
问题描述 小明最近在教邻居家的小朋友小学奥数,而最近正好讲述到了三阶幻方这个部分,三阶幻方指的是将1~9不重复的填入一个3*3的矩阵当中,使得每一行.每一列和每一条对角线的和都是相同的. 三阶幻方又被 ...
- 发现TCP的一种错误----客户端连接失败(10055错误号)
在客户端连接7302TCP端口失败,关闭程序,启动sockettool也不行,出现错误号为 10055(发现队列满了或者空间不足).通过查网上资料,发现有两个方法:设置 ( TcpTimedWaitD ...
- CenOS下搭建PPTP服务
公司生产环境使用的是阿里云主机,采用的是两台nginx主机进行反向代理,现在需要内网一台服务器能够访问公网,所以在nginx服务器上搭建了VPN服务,用于进行内网访问公网. 系统环境:CenOS 6. ...
- vue-router配合vue-cli的实例
前面在说到vue-router的时候,都是用最简单的方式说明用法的,但是在实际项目中可能会有所出入,所以,今天就结合vue脚手架来展示项目中的vue-router的用法. 创建项目 首先需要使用脚手架 ...
- Java-Runoob-高级教程-实例-方法:08. Java 实例 – break 关键字用法
ylbtech-Java-Runoob-高级教程-实例-方法:08. Java 实例 – break 关键字用法 1.返回顶部 1. Java 实例 - break 关键字用法 Java 实例 Ja ...
- vSphere 查看FC HBA的WWNN和WWPN
# 查看WWN号