一、传统意义上,JavaScript只有indexOf方法可以用来确定一个字符串是否包含在另一个字符串中。ES6又提供了3种新的方法。
a:新增方法
1.includes():返回布尔值,表示是否找到了参数字符串
2.startsWith():返回布尔值,表示参数字符串是否在源字符串的头部
3.endsWith():返回布尔值,表示参数字符串是否在源字符串的尾部
这三个方法都支持第二个参数,表示开始搜索的位置。但是endsWith()和其他两个方法不同。它针对前n个字符,而其他两个方法针对从第n个位置到字符串结束位置之间的字符。
例子:
var strings = "Hello ES6!"; strings.includes('o ES6!'); //true strings.startsWith('He'); //true strings.endsWith('!'); //true strings.includes('Hello',0); //false strings.startsWith('H', 1); //false strings.endsWith('H',1); //true
b:对比indexOf()和includes()的区别
1.indexOf()返回的是数值型的,而includes()返回的是布尔型的
2.数组中的indexOf()不能判断数组中是否有NaN,而includes()可以
总之:如果想查找某个元素在数组中的索引位置,就用indexOf();如果想查找某个元素在数组中是否存在,就用includes()
二、新增repeat()方法
repeat()返回一个新字符串,表示将原字符串重复n次。
(1)参数如果是小数,会被取整
(2)参数如果是负数或Infinity会报错
(3)但如果参数是0到-1之间小数,则等同于0。(因为先取整运算了)
(4)参数NaN等同于0
例子:
'x'.repeat('3');//'xxx' 'x'.repeat('0'); //'' 'x'.repeat('NaN'); //'' 'x'.repeat('-0.2'); //'' 'x'.repeat('-1'); //报错:Uncaught RangeError: Invalid count value
三、ES2017引入字符串补全长度功能。
1.padStart():用于头部补全
2.padEnd():用于尾部补全
它们接受两个参数,第一个参数用来指定字符串的最小长度,第二个参数用于补全的字符串。
(1)如果源字符串长度等于或大于指定的最小长度,则返回原字符串
(2)如果省略第二个参数,则用空格补全
例子:
'x'.padStart(2,'a'); //'ax' 'x'.padStart(2,'aa'); //'ax' 'x'.padStart(2); //' x' 'x'.padEnd(2,'a'); //'xa'
四、模板字符串
模板字符串是增强版的字符串,用(`)标识。
(1)它可以当做普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。
(2)如果在模板字符串中需要使用反引号,则在其前面需要用反斜杠转义。
(3)如果表示多行字符串,所有空格和缩进都会被保留在输出中。
(4)在模板字符串中嵌入变量,需要将变量名写在${}中
(5)模板字符串中还可以调用函数
(6)模板字符串还可以嵌套
例子:
console.log(`Hello ES6 String拓展`); // Hello ES6 String拓展 console.log(`Hello ES6 String 拓展`); // Hello ES6 String 拓展 var tz = '拓展'; console.log(`Hello ES6 String${tz}`); // Hello ES6 String拓展 console.log(``Hello ES6` String拓展`); //`Hello ES6` String拓展 function templateFun(){return 'Hello ES6 String拓展'}; console.log(`${templateFun()}`); //Hello ES6 String拓展