第二章 字符串和正则表达式

91 阅读2分钟

更多字符串API

以下均为字符串的实例方法

  • includes("substr", index)

    判断字符串中是否包含指定的子字符串

    该函数的第二个参数为查找的起始索引,其默认为0

  • startsWith("substr", index)

    判断字符串是否已指定的子字符串开头

    该函数的第二个参数为查找的起始索引,其默认为0

  • endsWith("substr")

    判断字符串是否已指定的子字符串结束

  • repeat(n)

    将字符串重复指定的次数,然后返回一个新字符串

正则中的粘连标记

标记符号:y

含义:匹配时,直接从lastIndex所指的位置开始匹配,若从该位置开始的字符串满足要求则匹配成功,否则匹配失败

 var str = "123abc";
 var reg = /abc/;
 ​
 reg.lastIndex = 0;
 console.log(reg.test(str));     // true
 ​
 reg = /abc/y;
 reg.lastIndex = 0;
 console.log(reg.test(str));     // false
 ​
 reg.lastIndex = 3;
 console.log(reg.test(str));     // true

模版字符串

原始的字符串方式在书写换行时较为繁琐,需要使用转义字符来辅助换行

 var str = "123\
 abc"

并且原始字符串的拼接工作也较为麻烦

 var name = "张三";
 var str = "123" + name + "abc";

模版字符串就很好地解决了这两个问题

模版字符串的格式:将字符串的开始和结束位置加入`即可

在模版字符串中直接换行就会直接成为字符串中的换行

模版字符串中可以使用${}进行插值操作,其中{}内可以是任意的JS表达式

 var name = "张三";
 var str = `123
 ${name}
 abc`;

若要在模版字符串中显示${},可以给${}中的$进行转义

 `使用${}可以在模版字符串中进行插值操作`

模版字符串标记

模版字符串前面可以加上一个函数标记,当执行到该模版字符串时,会自动调用对应的函数,而函数的返回值则会成为模版字符串的返回值

模版字符串的 n 个插值符号,会将字符串分割为 n+1 个部分,这些分割出来的子串会被放入到一个数组中,当通过模版字符串来调用标记函数时,就会把该数组作为第一个参数传入,后续的参数就是一个个插入的值

 const str = myTag`abc${1+1}edf${2*2}ghi`;   // 调用mtTag函数
 ​
 function myTag(arr, exp1, exp2){
     console.log(arr, exp1, exp2);           // ["abc", "edf", "ghi"] 2 4
     return true;
 }
 ​
 console.log(str);                           // true