【ES6】字符串新增方法

目录

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 键、换行符等不可见的空白符号也有效。

相关推荐
小彭努力中1 小时前
8.Three.js中的 StereoCamera 立体相机详解+示例代码
开发语言·前端·javascript·vue.js·深度学习·数码相机·ecmascript
牧天白衣.5 小时前
html中margin的用法
前端·html
NoneCoder5 小时前
HTML与安全性:XSS、防御与最佳实践
前端·html·xss
沃野_juededa5 小时前
关于uniapp 中uview input组件设置为readonly 或者disabled input区域不可点击问题
java·前端·uni-app
哎哟喂_!5 小时前
UniApp 实现分享功能
前端·javascript·vue.js·uni-app
k1955142395 小时前
uniapp常用
前端·javascript·uni-app
wuhen_n7 小时前
CSS元素动画篇:基于页面位置的变换动画
前端·css·html·css3·html5
sql123456789118 小时前
前端——CSS1
前端
Nueuis8 小时前
微信小程序分页和下拉刷新
服务器·前端·微信小程序
小白64028 小时前
前端性能优化(实践篇)
前端·性能优化