字符串截取函数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 ...
随机推荐
- STL 的 vector 根据元素的值来删除元素的方法
vector 的 erase( ) 只能删除迭代器,所以要想删某种值的元素,需要这样: 假设有一个 vector 叫 vt ,则 vt.erase( remove( vt.begin() , vt.e ...
- Redis 键命令
1.设置key值 set name zhangsan 删除key del name 2. 判断key是否存在 exists a,返回1 说明存在: 0 表示不存在 3. 剩余过期时间 ttl 返回- ...
- python编码encode decode(解惑)
关于python 字符串编码一直没有搞清楚,今天总结了一下. Python 字符串类型 Python有两种字符串类型:str 与 unicode. 字符串实例 # -*- coding: utf-8 ...
- C#:匿名类型
匿名类型和var关键字是Visual C# 3.0提供的一个新特性,var是隐式类型而并不是类型javascript中的var. var user = new { Id = 1, Name = &qu ...
- redis常用客户端命令
sentinel操作: 1.查询主节点:redis-cli -h 172.16.4.220 -p 46379 SENTINEL get-master-addr-by-name mymaster 2.查 ...
- 【java】构造函数
什么时候自定义构造函数:当分析事物时,事物一存在就具备一些特征或者行为,那么就把这么内容定义在构造函数中 作用:对对象进行初始化,对象一建立,就会自动调用与之对应的构造函数 特点: 1.函数名和类名相 ...
- Video Test Pattern Generator(7.0)软件调试记录
Video Test Pattern Generator(7.0)软件调试记录 . XVidC_VideoMode XVIDC_VM_576_50_I = XVIDC_VM_720x576_50_I ...
- driftnet 抓取图片总结
语法: driftnet [options] [filter code] 主要参数: -b 捕获到新的图片时发出嘟嘟声 -i interface 选择监听 ...
- TCP/IP学习20180625-DNS
1 DNS:domain name system域名系統把域名,轉換成IP2 最開始是一個hosts.txt,後來是數據庫,最後是分佈式數據庫3 每個名字服務器存儲一部分名字.如果有不知道的名字,就轉 ...
- Foxmail Gmail Outlook
三个邮件客户端都比较好,但是作为用户精力是非常有限地,必须优中选优. 我选outlook,非常值得拥有. 理由如下: (1)和office完美契合 (2)和生产环境完美契合 (3)免费 (4)良好地任 ...