当项目需要替换大量中文,而又不想一个一个的替换

180 阅读1分钟

起因

老板想要做中英文切换的网站,并且还是已经成型的项目,人麻了,不相干的第N天。

日子凑合过呗,还能离咋地。

想偷懒

这是第一生产力,为了不想麻烦,并且还能产生很多其他的麻烦

比如<div title="你xx">可能会改成<div title="$t('home.xx')">少了冒号,不会读取变量,所以不会编译

又比如this.$confirm("是否删除这条数据?", "提示"),被改成了this.$confirm("是否删除这条数据?", this.this.$t("home.tips")),这种错误检查起来更烦,痛定思痛,用我能想到的方法node直接替换文件。

问题

操作大量的字符串,第一想到的应该是split,但是由于种种原因,最后选择了正则,然后又有一下问题。

  1. 区分html和js,不用管css
  2. 区分html中标签内和标签外的中文
  3. 区分标签内是否带有判断

大概就这些

  // 通过fs模块获取到文件内容
  let htmlStr = data.match(/<template>(.|\r\n)*<\/template>/)[0];
  let jsStr = data.match(/(<script>|<script.*>)(.|\r\n)*<\/script>/)[0];
  
  使用正则提取标签内属性和标签外内容
  标签内:/([\w-]+)="([^"]+)"/g
  标签外:/>([\s\S]*?)</gi
  
  判断是否有判断:/(\=\=\=)|(\=\=)/

目前只是一个初坯,如有不足的地方,欢迎补充

pan.baidu.com/s/1h6rZlSQU… 提取码: rzk5 复制这段内容后打开百度网盘手机App,操作更方便哦