1.String.fromCodePoint()
es5提供的String.fromCharCode方法,用于从Unicode码点返回对应字符,但是这个方法不能识别点大于0xFFFF的字符。该方法可以试别。
codePointAt()方法相反。返回字符串码点。
如果String.fromCodePoint方法又多个参数,则他们会被合并成一个字符串返回。
注意: fromCodePoint方法定义在String对象上,而codePointAt方法定义在字符串的实例对象上。
2.String.raw()
方法返回一个斜杠都被转义的字符串(即斜杠前面再加一个斜杠),往往用于模板字符串的处理方法。
String.rawHi\n${2+3}
//实际返回 Hi\n5
如果原字符串的斜杠已经转义,它还是会进行再次转义。
String.rawHi\\n
//返回 Hi\\n
该方法可以作为处理模板字符串的基本方法,它会将所有变量替换,而且对斜杠进行转义,方便下一步作为字符串来使用。本质是一个正常的函数,只是专用于模板字符串的标签函数。如果写成正常的函数的形式,它的第一个参数,应该是一个具有raw属性的对象,且raw属性的值应该是一个数组,对应模板字符串解析后的值。
String.raw({raw: ['foo', 'bar'], 1+2}) // foo3bar
上面代码中,String.raw()方法的第一个参数是一个对象,它的raw属性等同于原始的模板字符串解析后得到的数组。
作为函数,他的代码实现基本如下
String.raw = function(strings, ...values) {
let output = " "
let index
for(index=0;index<values.length; index++) {
output += strings.raw[index] +values[index]
}
output += strings.raw[index]
return output
}
3.实例方法 codePointAt()
js内部,字符以utf-16的格式储存,每个字符固定为2个字节,对于那些需要4个字节储存的字符(Unicode码点大于0xFFFF的字符),js会认为它们是两个字符。
es6提供该方法,能够正确处理4个字节储存的字符,返回一个字符的码点。
4.实例方法 normalize()
许多欧洲语言有语调符号和重音符号。为了表示他们,Unicode提供了两种方法。一种是直接提供重音符号的字符,比如Ǒ(\u01D1),另一种是提供合成符号,即原字符与重音符号的合成,两个字符合成一个字符,比如O(\u004F)和ˇ(\u030C)合成Ǒ(\u004F\u030C)。
这两种表示方法在视觉和语义上都是等价,但js不能识别。
'\u01D1'==='\u004F\u030C' //false
'\u01D1'.length // 1
'\u004F\u030C'.length // 2
上面代码表示,js将合成字符视为两个字符,导致两种表示方法不相等。
es6提供字符串实例的normalize方法,用来将字符的不同表示方法统一为同样的形式,这成为Unicode正规化。
'\u01D1'.normalize()==='\u004F\u030C'.normalize() //true
该方法可接受一个参数来制定normalize的方式,参数四个可选值:
NFC 默认参数,表示“标准等价合成”,返回多个简单字符的合成字符。所谓“标准等价”指的是视觉和语义上的等价。
NFD 表示“标准等价分解”,即在标准等价的前提下,返回合成字符分解的多个简单字符。
NFKC 表示“兼容等价合成”,返回合成字符串。所谓“兼容等价”,指的是语义上存在等价,视觉上不等价。比如“囍”和“喜喜”。(这只是用来举例,normalize方法不能识别中文。
NFKD 表示“兼容等价分解”,即在兼容等价的前提下,返回合成字符分解的多个简单字符。
'\u004F\u030C'.normalize('NFC').length // 1'\u004F\u030C'.normalize('NFD').length // 2
上述代码表示,NFC参数返回支付的合成形式,NFD参数返回字符的分解形式。
不过normalize方法目前不能识别三个或三个以上字符的合成。这种情况下,还是只能用正则表达式,通过Unicode编号区间判断。
5.实例方法 includes,startsWith,ensWith
includes 返回布尔值,表示是否找到了参数字符串
startsWith 返回布尔值,表示参数字符串是否在原字符串的头部。
endsWith 返回布尔值,表示参数字符串是否在原字符串的尾部。
这三个方法都支持第二个阐释,表示开始搜索的位置。使用第二个参数n时,endsWith与其他两个方法有所不同,它针对前n个字符,而其他两个针对从第n个位置知道字符串结束。
6.实例方法 repeat
返回新的字符串,表示将原字符串重复n次
参数如果是小数,会被取
参数是负数或者Infinity,会报错
如果参数是0到-1之间的小数,则会等同于0,这是因为会先进行取整运算,0到-1之间的小数,取整以后等于-0,repeat视同为0
参数NaN等同于0
参数是字符串,则先转换成数字。
7.实例方法 padStart,padEnd
字符串补全长度的功能,如果某个字符串不够制定长度,会在头部或者尾部补全。padStart头部补全,padEnd尾部补全。
两个参数,第一个参数是字符串补全生效的最大长度,第二个参数是用来补全的字符串。
如果原字符串长度,等于或者大于最大长度,则字符串补全不生效,返回原字符串。
如果用来补全的字符串与原字符串两者长度之和超过了最大长度,则会截去超出位数的补全字符串。
如果省略第二个参数,默认使用空格补全长度。
常见用途是为数值补全位数,另一个是提示字符串格式。
8.实例方法 trimStart,trimEnd
与trim行为一致,消除空格,返回的都是新字符串,不会修改原始字符串。除了空格键,这两个方法对字符串头部或尾部的tab键、换行符等不可见的空白符号也有效。浏览器还部署了额外两个方法,分别是他们的别名trimLeft,trimRight
9.实例方法 matchAll
该方法返回一个正则表达式在当前字符串的所有匹配。