从不懂就问,文本编辑中如何同时匹配多个关键字进行替换继续讨论:
批量查找替换
这东西要多简单有多复杂,如帖子 #11 提到的模糊匹配和语义分析问题。我们简化一下问题,就现在有十个名字,以此换成另外十个名字,做个列表,方便大家理解问题:
- 刘一 替换成 赵甲
- 陈二 替换成 钱乙
- 张三 替换成 孙丙
- 李四 替换成 李丁
- 王五 替换成 周戊
- 赵六 替换成 吴己
- 孙七 替换成 郑庚
- 周八 替换成 王辛
- 吴九 替换成 冯壬
- 郑十 替换成 陈癸
写名字累死我了,我应该去找一个姓名生成器的。
传统方法我们怎么做,逐个搜索替换,虽然每次替换都是全文替换,但是这件事情重复做十次,依旧让人很烦。万一是更多词语需要替换……
我们继续简化情况,不考虑读取文件内容的问题,就直接把内容复制出来写道程序里,像这样:
var content = `内容放这里,左右用反引号,就是一般再数字 1 左边那个按键。但这样用的前提是内容中没有这个符号,咱们简化情况嘛,暂时不考虑这种小概率例外`
然后我们对这个字符串(就是这一串字符)进行 replace
:
content.replaceAll('刘一', '赵甲')
.replaceAll('陈二', '钱乙')
.replaceAll('张三', '孙丙')
.replaceAll('李四', '李丁')
.replaceAll('王五', '周戊')
.replaceAll('赵六', '吴己')
.replaceAll('孙七', '郑庚')
.replaceAll('周八', '王辛')
.replaceAll('吴九', '冯壬')
.replaceAll('郑十', '陈癸')
console.log(content)
就还是逐个进行替换呢,只不过许多重复的操作都由程序代劳了,我们只不过复制粘贴一下……(搭配一些编辑器技巧会更舒适,不展开
这个脚本在浏览器的 控制台(Console)里就可以直接使用,日常还是很可能用得上的。
其实有更加简短的代码,但是那会用到更多知识,本着用最少的知识办最多的事情,就这样吧,挺好的。