字符串的扩展
1.字符串的遍历器接口
- 字符串可以被for...of循环遍历。
与es5的比较
for循环虽可以遍历字符串,但不能识别大于oxFFFF的编码;2.位置 --> 字符/码点
根据指定位置返回对应的字符和码点
es5:
- charCodeAt() 码点
- charAt() 字符
es6: ---优势,能识别大于oxFFFF的编码;
- codePointAt()--返回码点
- at()--返回字符 (目前es6还未实现,需要通过实现)
let hhh='fdf';hhh.charAt(1);// "d"hhh.charCodeAt(1);// 100hhh.codePointAt(1);// 100hhh.at(1)// Uncaught TypeError: hhh.at is not a function
3.码点 --> 字符
根据码点返回对应的字符
- es5:String.fromCharCode(0x20BB7); 定义在String对象上
- es6:String.fromCodePoint();定义在字符串的实例对象上。--能识别32位字符。即能识别Unicode编号大于oxFFFF;
String.fromCharCode(100)"d"String.fromCodePoint(0x20BB7)// "?"String.fromCodePoint(100,100,100)// ddd
4.查询字符串是否包含某个字符
es5:
- indexOf()
es6:
- includes():返回布尔值,表示是否找到了参数字符串。
- startsWith():返回布尔值,表示参数字符串是否在原字符串的头部。
- endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部
都支持第二个参数,表示开始搜索的位置。
let s = 'Hello world!';s.startsWith('world', 6) // trues.endsWith('Hello', 5) // trues.includes('Hello', 6) // false
5.repeat(n)
返回一个新字符串,表示将原字符串重复n次。
参数如果是小数,会被取整。'x'.repeat(3) // "xxx"'hello'.repeat(2) // "hellohello"'na'.repeat(0) // ""'na'.repeat(2.9) // "nana"'na'.repeat(Infinity)// RangeError'na'.repeat(-1)// RangeError参数NaN等同于 0
6.字符串补全长度的功能
padStart(minlength,string)用于头部补全,
padEnd(minlength,string)用于尾部补全用途:- 提示字符串格式;
- 为数值补全指定位数
'x'.padStart(5, 'ab') // 'ababx''x'.padStart(4, 'ab') // 'abax''x'.padEnd(5, 'ab') // 'xabab''x'.padEnd(4, 'ab') // 'xaba''xxx'.padStart(2, 'ab') // 'xxx''xxx'.padEnd(2, 'ab') // 'xxx''x'.padStart(4) // ' x''x'.padEnd(4) // 'x ''12'.padStart(10, 'YYYY-MM-DD') // "YYYY-MM-12"'09-12'.padStart(10, 'YYYY-MM-DD') // "YYYY-09-12"