编程有意思

不懂就问,文本编辑中如何同时匹配多个关键字进行替换继续讨论:

批量查找替换

这东西要多简单有多复杂,如帖子 #11 提到的模糊匹配和语义分析问题。我们简化一下问题,就现在有十个名字,以此换成另外十个名字,做个列表,方便大家理解问题:

  • 刘一 替换成 赵甲
  • 陈二 替换成 钱乙
  • 张三 替换成 孙丙
  • 李四 替换成 李丁
  • 王五 替换成 周戊
  • 赵六 替换成 吴己
  • 孙七 替换成 郑庚
  • 周八 替换成 王辛
  • 吴九 替换成 冯壬
  • 郑十 替换成 陈癸

写名字累死我了,我应该去找一个姓名生成器的。

传统方法我们怎么做,逐个搜索替换,虽然每次替换都是全文替换,但是这件事情重复做十次,依旧让人很烦。万一是更多词语需要替换……

我们继续简化情况,不考虑读取文件内容的问题,就直接把内容复制出来写道程序里,像这样:

var content = `内容放这里,左右用反引号,就是一般再数字 1 左边那个按键。但这样用的前提是内容中没有这个符号,咱们简化情况嘛,暂时不考虑这种小概率例外`

然后我们对这个字符串(就是这一串字符)进行 replace


content.replaceAll('刘一', '赵甲')
       .replaceAll('陈二', '钱乙')
       .replaceAll('张三', '孙丙')
       .replaceAll('李四', '李丁')
       .replaceAll('王五', '周戊')
       .replaceAll('赵六', '吴己')
       .replaceAll('孙七', '郑庚')
       .replaceAll('周八', '王辛')
       .replaceAll('吴九', '冯壬')
       .replaceAll('郑十', '陈癸')

console.log(content)

就还是逐个进行替换呢,只不过许多重复的操作都由程序代劳了,我们只不过复制粘贴一下……(搭配一些编辑器技巧会更舒适,不展开

这个脚本在浏览器的 控制台(Console)里就可以直接使用,日常还是很可能用得上的。

其实有更加简短的代码,但是那会用到更多知识,本着用最少的知识办最多的事情,就这样吧,挺好的。