字符串的 unicode 表示法
JavaScript 内部,字符以 UTF-16 的格式储存,每个字符固定为 2 个字节。对于那些需要 4 个字节储存的字符(Unicode 码点大于 0xFFFF 的字符),JavaScript 会认为它们是两个字符。 JS 允许采用\uXXXX 的形式表示一个字符串但是只限于码点在\u0000 至 \uFFFF 之间的字符,超过的必须用两个双字节表示
- 不在\u0000 至 \uFFFF 之间的字符采用大括号括起来
'\u{20BB7}' // "𠮷"
- 字符串的遍历器接口
for (let codePoint of 'foo') {
console.log(codePoint)
}
// "f"
// "o"
// "o"
includes, startsWith, endsWith
- includes():返回布尔值,表示是否找到了参数字符串
- startsWith():返回布尔值,表示参数字符串是否在原字符串的头部
- endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部
这三个方法都支持第二个参数,startsWith,includes 表示开始搜索的位置, endsWith 表示结束的位置。
var s = 'Hello world!';
s.startsWith('world', 6) // true
s.endsWith('Hello', 5) // true
s.includes('Hello', 6) // false
repeat()
返回一个新的字符串,表示将原字符串重复 n 次,如果是小数会被取整,负数或 Infinity 会报错。
'x'.repeat(3) // "xxx"
'hello'.repeat(2.9) // "hellohello"
'na'.repeat(0) // ""
padStart(),padEnd()
ES2017 引入了补全字符串长度的方法。第一个参数表示最小长度,第二个参数是用来补全的字符串,如果省略表示用空格补全
'x'.padStart(4, 'ab') // 'abax'
'x'.padEnd(5, 'ab') // 'xabab'
'x'.padStart(4) // ' x'
'abc'.padStart(10, '0123456789') // '0123456abc'
用途
- 补全指定位数
'1'.padStart(10, '0') // "0000000001"
- 提示字符串的格式
'12'.padStart(10, 'YYYY-MM-DD') // "YYYY-MM-12"
模板字符串(``)
标签模板
标签模板其实不是模板,而是函数调用的一种特殊形式。“标签”指的就是函数,紧 跟在后面的模板字符串就是它的参数
alert`123` // alert(123)
var a = 5;
var b = 10;
tag`Hello ${ a + b } world ${ a * b }`;
// 等同于
tag(['Hello ', ' world ', ''], 15, 50)
用途
- 过滤 HTML 字符串防止用户输入恶意内容
- 多语言切换
String.raw()
返回一个斜杠都被转义(即斜杠前面再加一个斜杠)的字符串,对应于替换变量后的模板字符串
String.raw`Hi\n${2+3}!`;
// "Hi\\n5!"
trimStart()和 trimEnd()
去掉字符串首,尾空白字符