这里是顶部测试

字符串新增方法

Posted on 2020-01-11 15:06  李氏长歌  阅读(315)  评论(0编辑  收藏  举报

ES6字符串新增方法

一,String.fromCodePoint():识别大于0xFFFF的字符,弥补了String.fromCharCode()方法的不足。

作用:返回对应码点的字符串。

语法:

String.fromCodePoint(0x20BB7)
// "𠮷"
String.fromCodePoint(0x78, 0x1f680, 0x79) === 'x\uD83D\uDE80y'
// true,多个参数会被合并成一个字符串输出

二,String.raw():该方法返回一个斜杠都被转义(即斜杠前面再加一个斜杠)的字符串,往往用于模板字符串的处理方法。

作用:1,防止执行转义字符;2,处理模板字符串。

语法:

1,String.raw`Hi\\n` === "Hi\\\\n" // true,用于防止执行转义字符

2,形成模板字符串并执行变量
// `foo${1 + 2}bar`
// 等同于
String.raw({ raw: ['foo', 'bar'] }, 1 + 2) // "foo3bar"

三,String.codePointAt():正确处理 4 个字节储存的字符,返回一个字符的码点。

作用:找到对应位置的字符,并且返回该字符的码点。
codePointAt()方法是测试一个字符由两个字节还是由四个字节组成的最简单方法。

语法:

let s = '𠮷a';

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

s.codePointAt(2) // 97

注意:

codePointAt可识别四个字节的字符。但是参数却不对应字符串下标,此时如果想用字符串下标识别字符,需要使用for of,for of可以识别四个字节的字符,并且循环变量对应字符串下标。

例如:

let ty = "𠮷a𠮷a𠮷a𠮷a𠮷a";//字符串长度为10,但是字节长度是15

ty.codePointAt(1);//57271,读取的是字符串中下标为0的“𠮷”的第二个字符

ty.codePointAt(0);//134071,读取的是字符串中下标为0的“𠮷”的全部,因为该方法可识别四个字节的字符

1,for of

let s = '𠮷a';
for (let ch of s) {
console.log(ch.codePointAt(0).toString(16));
}
// 20bb7,是第一个字符
// 61,是第二个字符

2,forEach

let arr = [...'𠮷a']; // arr.length === 2
arr.forEach(
ch => console.log(ch.codePointAt(0).toString(16))
);
// 20bb7
// 61


四,String.normalize():为了表示语调和重音符号。

'\u01D1'==='\u004F\u030C' //false,都是同一个字符

'\u01D1'.length // 1

'\u004F\u030C'.length // 2

1,直接提供字符

语法:'\u01D1'.normalize();

2,利用两个字符进行组合

语法:'\u004F\u030C'.normalize();

注意:normalize()接受四个参数,NFC NFD NFKC NFKD;解析标准不同,返回的字符长度不同。

'\u004F\u030C'.normalize('NFC').length // 1
'\u004F\u030C'.normalize('NFD').length // 2

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


五,判断字符串中是否有某个值:

语法:

String.includes():返回布尔值,表示是否找到了参数字符串。

String.startsWith():返回布尔值,表示参数字符串是否在原字符串的头部。

String.endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部。

三个函数都支持两个参数:查找的字符,查找起始位置。

注意:endsWith(" ",n):是查找前n项,倒着查找。

六,String.repeat():方法返回一个新字符串,表示将原字符串重复n次。

语法:

'x'.repeat(3) // "xxx"
'hello'.repeat(2) // "hellohello"
'na'.repeat(0) // ""

返回值:是一个原字符串重复n次后生成的心字符串。

注意:小数次数会被取整;负数、Infinity报错;字符串,则会先转换成数字;0 到-1 之间的小数,则等同于 0,这是因为会先进行取整运算;参数NaN等同于 0。

七,如果某个字符串不够指定长度,会在头部或尾部补全:

adStart()用于头部补全,padEnd()用于尾部补全。

作用:补全制定长度的字符串。

返回值:返回一个补全后的新字符串,原字符串不变。

注意:

1,原字符大于等于指定长度,返回原字符串;
2,补全字符串比指定长度大,截取补全字符串进行补全;
3,补全字符串被省略,空格补全;
4,常用:padStart()的常见用途是为数值补全指定位数。下面代码生成 10 位的数值字符串。

'1'.padStart(10, '0') // "0000000001"
'12'.padStart(10, '0') // "0000000012"
'123456'.padStart(10, '0') // "0000123456"
另一个用途是提示字符串格式。

'12'.padStart(10, 'YYYY-MM-DD') // "YYYY-MM-12"
'09-12'.padStart(10, 'YYYY-MM-DD') // "YYYY-09-12"

八,String.trimStart(),String.trimEnd():

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

trimLeft()是trimStart()的别名,trimRight()是trimEnd()的别名。

九,String.matchAll():正则表达式在当前字符串的所有匹配。

Copyright © 2024 李氏长歌
Powered by .NET 8.0 on Kubernetes

这里是页脚测试