字符串的扩展
1.for of (遍历字符串)
let str='少多了几分搭街坊,dfldjflk';
for(let code of str){
console.log(code)
}
除了遍历字符串,这个遍历器最大的优点是可以识别大于0xFFFF的码点,传统的for循环无法识别这样的码点
2.at()
和charAt()类似,返回指定位置的字符,不同的是,charAt()不能识别码点大于0xFFFF的字符但是at可以。
不能直接使用,需要通过垫片库实现
3.includes(), startsWith(), endsWith()
传统上,JavaScript只有indexOf方法,可以用来确定一个字符串是否包含在另一个字符串中。ES6又提供了三种新方法。
indexOf:判断一个字符串是否包含指定字符串,有就返回索引值,没有返回-1
includes:判断一个字符串中是否包含指定字符串,返回布尔值
startsWith:判断一个字符串是否以制定字符串开头,返回布尔值。
endsWith:判断一个字符串是否以制定字符串结尾,返回布尔值。
这三个方法都支持第二个参数,表示开始搜索的位置。
vars='Hello world!';
s.startsWith('world',6)// true
s.endsWith('Hello',5)// true
s.includes('Hello',6)// false
上面代码表示,使用第二个参数n时,endsWith的行为与其他两个方法有所不同。它针对前n个字符,而其他两个方法针对从第n个位置直到字符串结束。
4.repeat()
repeat方法返回一个新字符串,表示将原字符串重复n次
用法:str.repeat(num)
'x'.repeat(3)// "xxx"
'hello'.repeat(2)// "hellohello"
'na'.repeat(0)// ""
参数说明:
传0返回空字符串
传小数会被取整重复
传负数或者Infinity会报错
传0~-1的小数或者NaN会被当作0,返回空字符串
传入字符串,会先隐式转换成数字再做重复。
5.padStart() padEnd()
说明:将字符串补全到你所想要的位数。
参数:
参数1:数字,指定你想要将字符串补全到多少位。
参数2:字符串,你想要用什么字符串来补全。padStart是在前边补全,padEnd是在后边补全。
参数说明:
如果参数1小于原来字符串的长度,不会补全,返回原字符串。
如果参数二的长度和原来字符串长度的和大于参数一,会截取参数二。
如果省略参数二,默认以空格补全。
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"
6.模板字符串
在es5中,我们用原生js字符串拼接html模板非常麻烦。
现在在es6里面很简单
说明:
1.es6模板字符串定义的时候不再是用“str”了,而是用反引号`str`(就是esc键下方的那个)。
2.es6模板字符串会识别空格、换行、等格式。
3.es6模板字符串可以识别\n \t \r等格式
4.es6模板字符串扩展了插值语法,不用再豆豆加加了。插值语法:${你要插入的数据}。
5.想输出反引号可以用\转义
7.插值语法的{ }内还可以放任意的javascript代码,可以运算,引用对象,也可以调用函数,将返回值或者运算结果输出。
8.如果插值语法内放入的是字符串,那么字符串原样输出
9.模板字符串还可以嵌套。
7.Sring.raw
String.raw方法,往往用来充当模板字符串的处理函数
Sring.raw后面跟一个模板字符串做参数,这个方法将后面的模板字符串中的转义字符(\n \t \r 等)全部原样输出,相当于二次转移(\n-->\\n)
如果原字符串的斜杠已经转义,那么String.raw不会做任何处理。
用法:
不再是Sring.raw()而是Sring.raw后面直接写一个模板字符串