获取代码中所有的中文并排除注释代码

在给项目添加国际化适配时,需要吧代码中的中文一个一个替换成 $t(xxx.xxx) 这种代码,但是一个一个找中文比较麻烦,而且容易遗漏,于是就有了下面的代码,可以快速的帮我们找出对应文件中的所有中文,并且把中文放在一个对象中,我们直接复制就可以使用。而且排除了html注释和JS注释,只匹配真正需要的中文

const fs = require('fs')

function extractChinese(filePath, startNum) {
  fs.readFile(filePath, 'utf8', function (err, data) {
    if (err) {
      console.error(err)
      return
    }

    // 移除单行注释
    let noSingleLineComments = data.replace(/\/\/[^\n]*/g, '')
    // 移除多行注释
    let noMultiLineComments = noSingleLineComments.replace(/\/\*[\s\S]*?\*\//g, '')
    // 移除HTML注释
    let noComments = noMultiLineComments.replace(/<!--[\s\S]*?-->/g, '')

    // 匹配中文字符
    let matches = noComments.match(/[\u4e00-\u9fa5]+/g)
    if (matches) {
      let result = {}
      matches.forEach((match) => {
        result['t' + startNum] = match
        startNum++
      })
      console.log(JSON.stringify(result, null, 2))
    }
  })
}

let path = 'D:\\xxxxx\\test.vue'
let startNum = 1

// 使用方法
extractChinese(path, startNum)

test.vue 文件的内容如下

<template>
  <div>
    <!--注释代码-->
    <div>真实的中文字段</div>
  </div>
</template>

<script>
export default {
  name: 'test',
  data() {
    return {
      name: '姓名',
      pwd: '密码',
    }
  },
  mounted() {
    // 这是JS注释中文
    console.log('代码中的中文')
  },
}
</script>

里面有HTML注释和JS注释,然后使用上面的方法执行一遍
在这里插入图片描述
可以看到非常方便的就获取到了真正需要替换的中文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然可以,下面是带有详细注释代码: ```cpp #include <QListWidget> // 包含QListWidget控件的头文件 #include <QDir> // 包含QDir类的头文件 #include <QFile> // 包含QFile类的头文件 #include <QTextStream> // 包含QTextStream类的头文件 // 获取文件夹的所有文件,并添加到列表框 void loadFiles(QListWidget* listWidget, const QString& folderPath) { QDir folder(folderPath); // 创建QDir对象,用于打开指定文件夹 QStringList files = folder.entryList(QDir::Files); // 获取文件夹的所有文件列表,排除文件夹和子文件夹 for (const QString& fileName : files) // 遍历文件列表 { QFile file(folder.filePath(fileName)); // 创建QFile对象,用于打开指定文件 if (file.open(QIODevice::ReadOnly | QIODevice::Text)) // 打开文件 { QTextStream in(&file); // 创建QTextStream对象,用于读取文件内容 QString fileContent = in.readAll(); // 读取文件内容 listWidget->addItem(fileContent); // 将文件内容添加到列表框 file.close(); // 关闭文件 } } } // 在窗口构造函数调用loadFiles()方法来加载文件列表 MyWindow::MyWindow(QWidget* parent) : QWidget(parent) { QListWidget* listWidget = new QListWidget(this); // 创建QListWidget控件对象,用于显示文件列表 loadFiles(listWidget, "/path/to/folder"); // 调用loadFiles()方法,加载文件列表 // 将QListWidget控件添加到窗口,以便用户可以看到文件列表 // 窗口可以使用布局管理器来调整QListWidget控件的位置和大小 // 如果不使用布局管理器,则需要手动设置QListWidget控件的位置和大小 // 例如:listWidget->setGeometry(10, 10, 200, 200); // 表示将QListWidget控件放置在窗口的(10, 10)处,大小为200x200像素 // 如果QListWidget控件太大,可以使用QScrollArea控件来添加滚动条 // 例如:QScrollArea* scrollArea = new QScrollArea(this); // scrollArea->setWidget(listWidget); // scrollArea->setWidgetResizable(true); // scrollArea->setGeometry(10, 10, 200, 200); // 表示将QListWidget控件放置在可滚动的QScrollArea控件,大小为200x200像素 // 如果文件夹的文件太多,可能需要一些时间才能加载完所有的文件 // 可以使用QProgressDialog控件来显示加载进度,提高用户体验 } ``` 希望这能帮助到您,如果您还有任何问题,请随时告诉我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值