目录
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) // 57271s.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 键、换行符等不可见的空白符号也有效。