【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. ES6字符串新增方法

    2024-03-19 11:50:01       40 阅读
  2. ES6 字符串新增方法(二十)

    2024-03-19 11:50:01       24 阅读
  3. ES6之对象新增方法

    2024-03-19 11:50:01       57 阅读
  4. ES6字符串方法

    2024-03-19 11:50:01       44 阅读
  5. ES6 对象的新增方法(十四)

    2024-03-19 11:50:01       24 阅读
  6. ES6新增的 Symbol

    2024-03-19 11:50:01       65 阅读
  7. ES6字符串变化

    2024-03-19 11:50:01       62 阅读
  8. #Js篇:字符串的使用方法es5和es6

    2024-03-19 11:50:01       53 阅读
  9. ES6之函数新增的扩展

    2024-03-19 11:50:01       59 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-19 11:50:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-19 11:50:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-19 11:50:01       82 阅读
  4. Python语言-面向对象

    2024-03-19 11:50:01       91 阅读

热门阅读

  1. Linux之scp命令的使用方法

    2024-03-19 11:50:01       43 阅读
  2. 愚人节礼物(C++)

    2024-03-19 11:50:01       47 阅读
  3. C# 循环

    C# 循环

    2024-03-19 11:50:01      38 阅读
  4. MySQL 运算符

    2024-03-19 11:50:01       40 阅读
  5. 2022蓝桥杯/李白打酒加强版/c\c++

    2024-03-19 11:50:01       34 阅读
  6. windows平台Qt5连接wifi

    2024-03-19 11:50:01       34 阅读
  7. C++ 11

    C++ 11

    2024-03-19 11:50:01      33 阅读