ES6 字符串方法的扩展

前言

本文基于阮一峰的ES6编写,在此只介绍一些常用的。

includes()、startsWith()、endsWith()

本来Js中只有`indexOf`方法可以用来确定一个字符串是否包含在另一个字符串中。ES6中又新增了三种新方法。

includes()

返回布尔值,表示是否找到了参数字符串。	
	let str = 'abcde'
	str.includes('a') //true
支持第二个参数,表示开始搜索的位置
	let str = 'abcdef'
	str.includes('a',2) //false

上述表示从字符串的第三个位置到最后是否存在字符串a,很显然不存在。

startsWith()

	返回布尔值,表示参数字符串是否再源字符串的头部
	let str = 'abcdef'
	str.startsWith('abc')  // true

上述代码表示字符串abc是否在字符串的首部。

let str = 'abcdefg'
str.startsWith('abc',2)  //false

上述代码意为从下标为2的字符开始到最后的这段字符串中,是否以字符串abc开头。

endsWith()

返回布尔值,表示参数字符串是否在源字符串的尾部
let str = 'abcdefg'
str.endsWith('fg')  //true
str.endsWith('fg',4)  //false

endsWith()方法的第二个参数与其他两个略有不同,指的是前n个字符,如上,最后一句意为在源字符串中的前4个字符组成的字符串即'abcd'是否是以'fg'结尾的。

repeat()

返回一个新字符串,将原字符串重复n次
'x'.repeat(3)  // "xxx"  ①
'x'.repeat(2.9) // "xx"  ②
'x'.repeat(0)  // ""  ③
'x'.repeat(-0.9)  // ""  ④
'x'.repeat(NaN)  // ""  ⑤
'x'.repeat('3')  // "xxx"  ⑥
'x'.repeat(-1)  //RangeError  ⑦

如果参数是一个小数,那么会先取整(②);如果参数是-1到0之间的小数,取值为0(④),如果是负数或是Infinity,会报错(⑦);如果是NaN,等同于0(⑤),如果是字符串会先转换为数字(⑥)。

trimStart()、trimEnd()

trim()方法会消除掉字符串的首尾空格,trimStart()方法和trimEnd()方法,分别会消除字符串的首部和尾部的空格。
let str = '  ab c d     '
str.trim()   // "ab c d"
str.trimStart()   //  "ab c d     "
str.trimEnd()  //     "  ab c d"

replaceAll()

一次性替换所有匹配项,返回一个新字符串,不会改变原字符串。
'aabbcc'.replaceAll('a','pp')   //"ppppbbcc"

第一个参数可以是一个字符串,也可以是一个全局的正则表达式且必须是一个全局的,否则报错。

'aabbcc'.replaceAll(/a/g,'pp')   //"ppppbbcc"
'aabbcc'.replaceAll(/a/,'pp')   //报错

函数的第二个参数除了为字符串,也可以是一个函数,该函数的返回值将替换掉第一个参数匹配的文本

'aabbcc'.replaceAll('a',()=> 'pp')   // "ppppbbcc"

这个替换函数可以接受多个参数,第一个参数是捕获到的匹配内容,第二个参数捕捉到是组匹配(有多少组匹配,就有多少个对应的参数)。此外,最后还可以添加两个参数,倒数第二个参数是捕捉到的第一个内容在整个字符串的位置,最后一个参数是原字符串。

const str = '123abc456';
const regex = /(\d+)([a-z]+)(\d+)/g;

function replacer(match, p1, p2, p3, offset, string) {
console.log(offset)
  return [p1, p2, p3].join(' - ');
}

str.replaceAll(regex, replacer)
// 0  (log)
//	"123 - abc - 456"

借鉴字符串的新增方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值