字符串的扩展
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);
// 100
hhh.codePointAt(1);
// 100
hhh.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) // true
s.endsWith('Hello', 5) // true
s.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"
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。