三、字符串的拓展
#3.1 includes(),startsWith(),endsWith()
在我们判断字符串是否包含另一个字符串时,ES6之前,我们只有typeof
方法,ES6之后我们又多了三种方法:
- includes():返回布尔值,表示是否找到参数字符串。
- startsWith():返回布尔值,表示参数字符串是否在原字符串的头部。
- endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部。
let a = 'hello leo';
a.startsWith('leo'); // false
a.endsWith('o'); // true
a.includes('lo'); // true
并且这三个方法都支持第二个参数,表示起始搜索的位置。
let a = 'hello leo';
a.startsWith('leo',1); // false
a.endsWith('o',5); // true
a.includes('lo',6); // false
endsWith
是针对前 n
个字符,而其他两个是针对从第n
个位置直到结束。
#3.2 repeat()
repeat
方法返回一个新字符串,表示将原字符串重复n
次。
基础用法:
'ab'.repeat(3); // 'ababab'
'ab'.repeat(0); // ''
特殊用法:
- 参数为
小数
,则取整
'ab'.repeat(2.3); // 'abab'
- 参数为
负数
或Infinity
,则报错
'ab'.repeat(-1); // RangeError
'ab'.repeat(Infinity); // RangeError
- 参数为
0到-1的小数
或NaN
,则取0
'ab'.repeat(-0.5); // ''
'ab'.repeat(NaN); // ''
- 参数为
字符串
,则转成数字
'ab'.repeat('ab'); // ''
'ab'.repeat('3'); // 'ababab'
#3.3 padStart(),padEnd()
用于将字符串头部或尾部补全长度,padStart()
为头部补全,padEnd()
为尾部补全。
这两个方法接收2个参数,第一个指定字符串最小长度,第二个用于补全的字符串。
基础用法 :
'x'.padStart(5, 'ab'); // 'ababx'
'x'.padEnd(5, 'ab'); // 'xabab'
特殊用法:
- 原字符串长度,大于或等于指定最小长度,则返回原字符串。
'xyzabc'.padStart(5, 'ab'); // 'xyzabc'
- 用来补全的字符串长度和原字符串长度之和,超过指定最小长度,则截去超出部分的补全字符串。
'ab'.padStart(5,'012345'); // "012ab"
- 省略第二个参数,则用
空格
补全。
'x'.padStart(4); // ' x'
'x'.padEnd(4); // 'x '
#3.4 模版字符串
用于拼接字符串,ES6之前:
let a = 'abc' +
'def' +
'ghi';
ES6之后:
let a = `
abc
def
ghi
`
拼接变量: 在**反引号()**中使用
${}`包裹变量或方法。
// ES6之前
let a = 'abc' + v1 + 'def';
// ES6之后
let a = `abc${v1}def`