当前位置:嗨网首页>书籍在线阅读

02-子字符串匹配和替换

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

17.1 子字符串匹配和替换

正则表达式的本质是匹配一个字符串的子字符串,或者替换该子字符串。它将以难以想象的强大功能和灵活性来帮助程序员完成这件事,所以在开始进一步学习之前,先简单地过一下 String.prototype 的非正则搜索和替换功能,该功能可以满足一些非常基本的搜索和匹配需求。

如果只想知道某个子字符串是否包含在一个更大的字符串中,下面的 String.prototype 方法就可以实现:

const input = "As I was going to Saint Ives";
input.startsWith("As")          // true
input.endsWith("Ives")          // true
input.startsWith("going", 9)    // true – 从下标9开始
input.endsWith("going", 14)     // true – 将下标14当做字符串的结尾
input.includes("going")         // true
input.includes("going", 10)     // false – 从下标10开始
input.indexOf("going")          // 9
input.indexOf("going", 10)      // -1 
input.indexOf("nope")           // -1

注意,这里的所有方法都区分大小写。所以 input.startsWith("as") 会返回fasle。如果不想区分大小写,将输入转化成小写即可:

input.toLowerCase().startsWith("as")         // true

还要注意,上面的语句并没有改变原始字符串; String.prototype.toLowerCase 会返回一个新字符串,而不会修改原始字符串(记住,在JavaScript中,字符串是不可变的)。

如果想做进一步操作,比如替换掉刚才匹配到的子字符串,可以使用 String.prototype.replace

const input = "As I was going to Saint Ives";
const output = input.replace("going", "walking");

同样,原始字符串(input)没有被这个替换语句修改。替换后,在output这个新字符串中,“going”已经被替换为“walking”(当然,如果真的想更改input的值,可以将替换后的值再赋给 input )。