字符的Unicode表示法
JavaScript共有6种方法可以表示一个字符:
'z'
'\z' === 'z' // true
'\172' === 'z' // true
'\x7A' === 'z' // true
'\u007A' === 'z' // true
'\u{7A}' === 'z' // true
includes(), startsWith(), endsWith()
includes():返回布尔值,表示是否找到了参数字符串。
startsWith():返回布尔值,表示参数字符串是否在源字符串的头部。
endsWith():返回布尔值,表示参数字符串是否在源字符串的尾部。
var s = 'Hello world!';
s.startsWith('world', 6) // true
s.endsWith('Hello', 5) // true
s.includes('Hello', 6) // false
这三个方法都支持第二个参数,表示开始搜索的位置。
repeat()
repeat方法返回一个新字符串,表示将原字符串重复n次。
'x'.repeat(3) // "xxx"
'hello'.repeat(2) // "hellohello"
'na'.repeat(0) // ""
模板字符串
模板字符串(template string)是增强版的字符串,用反引号(`)标识。它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。
// 字符串中嵌入变量
var name = "Bob", time = "today";
`Hello ${name}, how are you ${time}?`
//"Hello Bob, how are you today?"
模板字符串中嵌入变量,需要将变量名写在${}
之中。
大括号内部可以放入任意的JavaScript表达式,可以进行运算,以及引用对象属性。模板字符串之中还能调用函数。
var x = 1;
var y = 2;
`${x} + ${y} = ${x + y}`
// "1 + 2 = 3"
function fn() {
return "Hello World";
}
`foo ${fn()} bar`
// foo Hello World bar
字符编码
var s="hello";
s.codePointAt(0);//返回某个位置字符的码点,
String.fromCodePoint(98);//根据码点返回字符,可以识别大于0xFFFF的码点。
在es6
中,表示字符的码点使用这种方式:
字符查找at()
ES5对字符串查找提供了charAt
来返回字符串某位置的字符,但不能识别大于0xFFFF
的字符。
at()
可以识别Unicode编码大于0xFFFF
的字符。
'abc'.at(0) // "a"
'𠮷'.at(0) // "𠮷"
字符串补全方法padStart() padEnd()
padStart
用于头部补全,padEnd
用于尾部补全。
'x'.padStart(5, 'ab') // 'ababx'
'x'.padStart(4, 'ab') // 'abax'
'x'.padEnd(5, 'ab') // 'xabab'
'x'.padEnd(4, 'ab') // 'xaba'
'09-12'.padStart(10, 'YYYY-MM-DD') // "YYYY-09-12"
'abc'.padStart(10, '0123456789')// '0123456abc'
padStart
和padEnd
一共接受两个参数,第一个参数用来指定字符串的最小长度,第二个参数是用来补全的字符串。