传统上,JavaScript只有indexOf
方法,可以用来确定一个字符串是否包含在另一个字符串中。ES6又提供了三种新方法。
includes()
includes():返回布尔值,表示是否找到了参数字符串。
var s = 'Hello world!';
s.includes('o') // true
第二个参数,表示开始搜索的位置。
var s = 'Hello world!';
s.endsWith('Hello', 5) // true
startsWith()
startsWith():返回布尔值,表示参数字符串是否在源字符串的头部。(大小写敏感)
var s = 'Hello world!';
s.startsWith('Hello') // true
第二个参数,表示开始搜索的位置。
var s = 'Hello world!';
s.startsWith('world', 6) // true
endsWith()
endsWith():返回布尔值,表示参数字符串是否在源字符串的尾部。
var s = 'Hello world!';
s.endsWith('!') // true
第二个参数,表示开始搜索的位置。
var s = 'Hello world!';
s.endsWith('Hello', 5) // true
上面代码表示,使用第二个参数n
时,endsWith
的行为与其他两个方法有所不同。它针对前n
个字符,而其他两个方法针对从第n
个位置直到字符串结束。
repeat()
repeat
方法返回一个新字符串,表示将原字符串重复n
次。
'x'.repeat(3) // "xxx"
'hello'.repeat(2) // "hellohello"
'na'.repeat(0) // ""
参数如果是小数,会被取整。
'na'.repeat(2.9) // "nana"
如果repeat
的参数是负数或者Infinity
,会报错。
'na'.repeat(Infinity)
// RangeError
'na'.repeat(-1)
// RangeError
但是,如果参数是0到-1之间的小数,则等同于0,这是因为会先进行取整运算。0到-1之间的小数,取整以后等于-0
,repeat
视同为0。
'na'.repeat(-0.9) // ""
参数NaN
等同于0。
'na'.repeat(NaN) // ""
如果repeat
的参数是字符串,则会先转换成数字。
'na'.repeat('na') // ""
'na'.repeat('3') // "nanana"
repeat()方法,我在耍题时经常会遇到。例如实现两个字符串的右对齐: