Stringextension1.字符Unicode表示剩余参数和数组函数log(...value){console.log(value);console.log(...value);}log([1,2,3]);//[[1,2,3]]//[1,2,3]log(1,2,3);//[1,2,3]//1232.字符串遍历使用for...of循环遍历for(letitemof'foo'){console.log(item);//'f''o''o'}3.includes(),startsWith(),endsWith()传统字符串只有indexOf方法,可以用来判断一个字符串是否包含在另一个字符串中。ES6提供了三种新方法。-includes():返回一个布尔值,指示是否找到参数字符串。-StartsWith():返回一个布尔值,表示参数字符串是否在原字符串的开头。-endsWith():返回一个布尔值,表示参数字符串是否在原字符串的末尾。lets='Helloworld!'s.startsWith("Hello")//trues.endsWith('!')//true.includes('o')//true这三个方法都支持第二个参数,表示在哪里开始搜索。lets='Helloworld!';s.startsWith('world',6)//trues.endsWith('Hello',5)//true前5个字符串s.includes('Hello',6)//false//以上代码表示当使用第二个参数n时,**endsWith的行为与其他两个方法不同。它以前n个字符为目标,**而其他两种方法以从第n个位置开始直到字符串末尾为目标。4.repeat()repeat返回一个新的字符串,也就是将原字符串重复n次。'x'.repeat(3)//'xxx''hello'.repeat(2)//'hellohello''na'.rapeat(0)//''如果参数是小数,则四舍五入'na'.repeat(2.9)//如果'nana'的参数为负数或Infinity,会报错'na'.repeat(Infinity)//RangError'na'.repeat(-1)//RangError如果参数在0-1之间,则视为0'na'.repeat(-0.9)//''//参数NaN等价于0'na'.repeat(NaN)//''//如果参数是字符串那么会先转换成数字'na'.repeat('na')//'''na'.rapeat('3')//'nanana'5.padStart(),padEnd()字符串补全函数padStart()用于头部补全,padEnd()用于尾部补全。'x'.padStart(5,'ab');//'ababx''x'.padStart(4,'ab');//"abax"'x'.padEnd(5,'ab');//'xabab''x'.padEnd(4,'ab');//'xaba'如果原字符串的长度等于或大于最大长度,则字符串补全不生效,原字符串将被退回。'xxx'.padStart(2,'ab')//'xxx'返回原字符串'xxx'.padEnd(2,'ab')//'xxx'如果完成的字符串相同则返回原字符串原始String,如果两者长度超过最大长度,截取超过2位的补全字符串'abc'.padStart(10,'0123456789')//如果省略第二个参数"0123456abc",则默认情况下将用空格填充全长。'x'.padStart(4)//'x''x'.padEnd(4)//'x'padStart()的一个常见用途是指定数字补全的位数。以下代码生成一个10位数字字符串。'1'.padStart(10,'0')//"0000000001"'12'.padStart(10,'0')//"0000000012"'123456'.padStart(10,'0')//"0000123456“另一个用途是提示字符串格式。'12'.padStart(10,'YYYY-MM-DD')//'YYYY-MM-12''09-12'.padStart(10,'YYYY-MM-DD')//"YYYY-09-12"6。字符串嵌入变量//在字符串中嵌入变量letname="Bob",time="today";`Hello${name},howareyou${time}?`可以放在花括号内可以执行操作和引用对象属性的任意JavaScript表达式。letx=1;lety=2;`${x}+${y}=${x+y}`//"1+2=3"`${x}+${y*2}=${x+y*2}`//"1+4=5"让obj={x:1,y:2};`${obj.x+obj.y}`//"3"模板字符也可以在字符串中调用函数。functionfn(){return"HelloWorld";}`foo${fn()}bar`//fooHelloWorldbar如果模板字符串中的变量没有声明,会报错。//变量place没有声明letmsg=`Hello,${place}`;//Error//因为模板字符串的大括号里面是要执行JavaScript代码的,所以如果大括号里面是一个string,它将原样输出`Hello${'World'}`//“HelloWorld”模板字符串甚至可以嵌套。consttmpl=addrs=>`
${addr.first} |
${addr.last} |