一、判定一个字符串是否包含在另一个字符串中的方法。

之前,我们JavaScript只有一种方法indexOf()(或者lastIndexOf())判定一个字符串是否包含在另一个字符串中,ES6又提供了三种方法:includes()、startsWith()、endsWith()。这三种方法都支持第二参数,表示从第几位开始搜索。

1、indexOf()方法和lastIndexOf()方法。

这两种方法都接受第二参数,表示从字符串的哪个位置开始搜索。返回值是子字符串第一次出现的位置,如果没有找到,则返回-1。不论是从前向后还是从后向前,都返回的是子字符串第一次出现的第一个字符的位置。

var str = 'bbgygsfdsbvgzx';
console.log(str.indexOf('gs'));         //从前向后搜索,寻找子字符串gs,返回值是4
console.log(str.lastIndexOf('gs'));     //从后向前搜索,寻找子字符串gs,返回值是4

console.log(str.indexOf('gs',2));       //从位置2开始,从前向后搜索子字符串gs,实际搜索区间是gygsfdsbvgzx,返回值是4
console.log(str.lastIndexOf('gs',2));   //从位置2开始,从后向前搜索子字符串gs,实际搜索区间是bb,返回值是-1

2、includes()方法

这个方法也接受第二参数,意思就是从第几个位置开始搜索,和indexOf()第二参数一样。返回值是布尔值,表示是否找到了参数字符串。

var str = 'hello world';
console.log(str.includes('ll'));    //true
console.log(str.includes('ll',4));  //false

3、startsWith()方法

这个方法也接受第二参数,和前面的的第二参数完全一样。返回值是布尔值,表示参数字符串是否在源字符串的头部。

var str = 'hello world';
console.log(str.startsWith('hello'));     //true
console.log(str.startsWith('llo',2));    //true
console.log(str.startsWith('llo'));     //false

4、ebdsWith()方法

这个方法也接受第二参数,不过它表示的是第n个位置之前的字符串。返回值是布尔值,表示的是参数字符串是否在源字符串的尾部。

var str = 'hello world';
console.log(str.endsWith('world'));     //true
console.log(str.endsWith('llo',5));    //true
console.log(str.endsWith('llo'));     //false

二、重复字符串

1、repeat()方法

repeat()方法表示将原字符串重复n次。返回值是一个新的字符串。要注意的是:①如果参数是小数,会被取整。②如果参数是负数或者Infinity,会报错。③0到1之间的小数被视为0,NaN也被视为0。

var str = 'hello';
console.log(str.repeat(3));       //hellohellohello
console.log(str.repeat(5.7));     //hellohellohellohellohello
console.log(str.repeat(0.8));     // ' '
console.log(str.repeat(-0.5));    // ' '
console.log(str.repeat(NaN));     // ' '

三、字符串补全长度的方法。

ES2017引入了字符串补全长度功能。如果某个字符串不够指定长度,会在头部或尾部补全。

1、padStart()方法

用于头部补全。接受两个参数,第一个参数是字符串最小长度,第二个参数是用来补全的字符串。返回值是补全后的字符串。如果字符串的长度大于等于指定长度,则返回原字符串。如果第二个参数省略,则会用空格来补全。用图是:①数值补全指定的位数。②提示字符串格式。

'x'.padStart(5,'yz');           //yzyzx
'x'.padStart(4,'yz');           //yzyx
'1'.padStart(10,'0');           //0000000001    用来为数值补全指定的位数
'12'.padStart(10,'YYYY-MM-DD');  //"YYYY-MM-12"  用来提示字符串格式

2、padEnd()方法

用于尾部补全。其他与padStart()用法一样。用途与padStart()有区别。我们知道padStart()的用途就好。

'x'.padEnd(5,'ab');       //xabab
'x'.padEnd(4,'ab');       //xaba