字符串的扩展
1.es6新增模板字符串 反引号- ``
es6之前字符串缺点
在es6之前声明字符串都是使用单引或双引号,单双引号字符号的缺点:
(1)不能随便换行 (2)+号拼接繁琐
新增反引号优点:
(1)用一对反引号声明: ` hello ` ; 反引号声明类型也为字符串类型
(2)嵌入变量: 内部可以任意嵌入表达式,语法: ${ 表达式 }
2.es6新增字符串实例方法:
静态方法(非实例方法):
构造函数名.方法(参数) String.fromCharCode(10)
字符串的实例方法:
对象/实力.方法(参数) " aa ".split(" bb ")
注意:字符串的所有实例方法都不改变原字符串,字符串是只读的
(1)repeat(number) : 把字符串重复指定的次数返回,小数取整,负数报错 str.repeat(2)
(2)startsWith(str,[startIndex = 0]) :判断字符串是否以某个字符串开头,是返回true;否,返回false
(3)endsWith(str,[endIndex = str.length - 1]) :判断字符串是否以某个字符串结尾,可选参数为下标
(4)includes(str,[startIndex = 0]) : 判断字符串是否包含某个字符串,包含返回true,不包含返回false
可以取代indexOf方法,includes更语义化
(5)padStart(length,str) : 字符串头部填充,返回填充后的字符串,但不会改变原字符串
(6)padEnd(length,str) : 字符串尾部填充,
length表示填充后的总长度,length < str.length时,不会做任何填充,返回原字符串
(7)trimStart() : 去除字符串的头部空格,返回去完空格的字符串
(8)trimEnd() : 去除字符串的尾部空格
trim() : 去除字符串的首尾空格
(9)repalceAll(searchValue | searchPattern,replacement):字符串全局替换
repalce():只会替换掉第一个搜索到的结果
不同情况使用:
(1)两个参数都是字符串:console.log(str.replace("a","b")) console.log(str.replaceAll("a","b"))
(2)第一个参数是正则,第二个参数是字符串: console.log(str.replace(/a/g,"b")) //相当于全局替换
console.log(str.replaceAll(/a/g,"b")) //replaceAll正则没有/g会报错
(3)第一个参数是正则,第二个参数为回调:
const str = "ccbbaa" ;
const ret = str.replace(/a/g,function(matchStr,index,str){
console.log(mathStr,index,str);
return " bb " }) //输出: "a" 5 "ccbbaa" ; "a" 6 "ccbbaa" //打印两次
console.log(ret)
回调函数参数: 第一个: 符合正则规则的字符串; 第二个: 在原字符中的下标; 第三个: 原字符本身
字符串中,空格也一占位!!