【ES6】字符串新增方法

本文详细介绍了JavaScript中ES6新增的String.fromCharCode()、String.raw()、codePointAt()等字符串处理方法,以及includes()、normalize()、trimStart()等实例方法的用法和示例,帮助开发者更好地理解和运用这些字符串操作技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.String.fromCharCode()

2.String.raw()

3.实例方法:codePointAt()

4.实例方法:normalize()

5.实例方法:includes()、startWith()、endWith()

6.实例方法:padStart()、padEnd()

7.实例方法:repeat()

8.实例方法:at()

9.实例方法:matchAll()

10.实例方法:replaceAll()

11.实例方法:trimStart()、trimEnd()


1.String.fromCharCode()

该方法用于从 Unicode 码点返回对应字符。

ES6的String.fromCharCode()方法可以识别大于0xFFFF的字符,弥补了ES5中String.fromCharCode()方法的不足。

2.String.raw()

该方法返回一个斜杠都被转义(即斜杠前面再加一个斜杠)的字符串,往往用于模板字符串的处理方法。如果原字符串的斜杠已经转义,那么String.raw()会进行再次转义。例:

String.raw`a\\n`
// 返回 "a\\\\n"

String.raw`a\\n` === "a\\\\n" 
// true

3.实例方法:codePointAt()

作用与上面String.fromCharCode()方法相反,能够正确处理 4 个字节储存的字符,返回一个字符的码点。例:

let s = '𠮷a';

s.codePointAt(0) // 134071
s.codePointAt(1) // 57271

s.codePointAt(2) // 97

如上代码,codePointAt()方法会正确返回 32 位的 UTF-16 字符的码点。对于那些两个字节储存的常规字符,它的返回结果与charCodeAt()方法相同。 

注:fromCodePoint方法定义在String对象上,而codePointAt方法定义在字符串的实例对象上

4.实例方法:normalize()

用来将字符的不同表示方法统一为同样的形式,这称为 Unicode 正规化。

normalize方法可以接受一个参数来指定normalize的方式,参数的四个可选值如下。

  • NFC,默认参数,表示“标准等价合成”(Normalization Form Canonical Composition),返回多个简单字符的合成字符。所谓“标准等价”指的是视觉和语义上的等价。
  • NFD,表示“标准等价分解”(Normalization Form Canonical Decomposition),即在标准等价的前提下,返回合成字符分解的多个简单字符。
  • NFKC,表示“兼容等价合成”(Normalization Form Compatibility Composition),返回合成字符。所谓“兼容等价”指的是语义上存在等价,但视觉上不等价,比如“囍”和“喜喜”。(这只是用来举例,normalize方法不能识别中文。)
  • NFKD,表示“兼容等价分解”(Normalization Form Compatibility Decomposition),即在兼容等价的前提下,返回合成字符分解的多个简单字符。
'\u004F\u030C'.normalize('NFC').length // 1
'\u004F\u030C'.normalize('NFD').length // 2

上面代码表示,NFC参数返回字符的合成形式,NFD参数返回字符的分解形式。

不过,normalize方法目前不能识别三个或三个以上字符的合成。这种情况下,还是只能使用正则表达式,通过 Unicode 编号区间判断。

5.实例方法:includes()、startWith()、endWith()

  • includes():返回布尔值,表示是否找到了参数字符串。
  • startsWith():返回布尔值,表示参数字符串是否在原字符串的头部。
  • endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部。

这三个方法都支持第二个参数,表示开始搜索的位置。 

6.实例方法:padStart()、padEnd()

padStart()用于头部补全,padEnd()用于尾部补全。例:

'c'.padStart(5, 'ab') // 'ababc'
'c'.padStart(4, 'ab') // 'abac'

'c'.padEnd(5, 'ab') // 'cabab'
'c'.padEnd(4, 'ab') // 'caba'

r如上代码中,padStart()padEnd()一共接受两个参数,第一个参数是字符串补全生效的最大长度,第二个参数是用来补全的字符串。

如果原字符串的长度,等于或大于最大长度,则字符串补全不生效,返回原字符串。

如果用来补全的字符串与原字符串,两者的长度之和超过了最大长度,则会截去超出位数的补全字符串。例:

'abc'.padStart(10, '123456789')
// '1234567abc'

如果省略第二个参数,默认使用空格补全长度。

7.实例方法:repeat()

返回一个新字符串,表示将原字符串重复n次。例:

'a'.repeat(2.9) // "aa"

 如上代码,不是整数的情况下会自动取整

8.实例方法:at()

接受一个整数作为参数,返回参数指定位置的字符,支持负索引(即倒数的位置)。

const str = 'hello';
str.at(1) // "e"
str.at(-1) // "o"

如果参数位置超出了字符串范围,at()返回undefined

9.实例方法:matchAll()

matchAll()方法返回一个正则表达式在当前字符串的所有匹配

10.实例方法:replaceAll()

可以一次性替换所有匹配。它的用法与replace()相同,返回一个新字符串,不会改变原字符串。

replaceAll()的第二个参数replacement是一个字符串,表示替换的文本,其中可以使用一些特殊字符串。

  • $&:匹配的字符串。
  • $` :匹配结果前面的文本。
  • $':匹配结果后面的文本。
  • $n:匹配成功的第n组内容,n是从1开始的自然数。这个参数生效的前提是,第一个参数必须是正则表达式。
  • $$:指代美元符号$

11.实例方法:trimStart()、trimEnd()

trimStart()消除字符串头部的空格,它们的行为与trim()一致,trimEnd()消除尾部的空格。它们返回的都是新字符串,不会修改原始字符串。 

除了空格键,这两个方法对字符串头部(或尾部)的 tab 键、换行符等不可见的空白符号也有效。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱因斯坦乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值