我最近制作了一个脚本,在这个脚本中,我想从带有node的txt文件中删除EXACT个匹配项.打印结果为true,但实际上没有从txt文件中删除该行.我用不和来获得论点.

        const fs = require('fs')
        fs.readFile('notredeemed.txt', function (err, data) {
            if (err) throw err;
                if (data.toString().match(new RegExp(`^${args[0]}$`, "m"))) {
                    fs.readFile('notredeemed.txt', 'utf8', function (err,data) {
                      if (err) {
                        return console.log(err);
                      }
                      var result = data.replace(/${args[0]/g, '');
                    
                      fs.writeFile('notredeemed.txt', result, 'utf8', function (err) {
                         if (err) return console.log(err);
                      });
                    });
                      console.log("true")

如果有人能帮我,我将不胜感激:)

推荐答案

我认为你可以像你现在的解决方案那样做,只是正则表达式有点不合适.

我使用两个捕获组作为一行的分隔符,而不是仅使用^$来指示整个字符串以args[0]开头和结束.

这个匹配任何换行符或字符串的开头.适用于文件的第一行,并防止部分替换,例如llo替换Hello:

(\n|^)

这个匹配回车符或字符串的末尾.这适用于文件末尾没有换行符的情况,还可以防止Hel替换Hello:

(\r|$)

这应该确保始终取出与args匹配的整行.

我还消除了第二个readFile,因为它没有必要让它工作.

const fs = require("fs")

fs.readFile("notredeemed.txt", function (err, data) {
  if (err) throw err

  const match = new RegExp(`(\n|^)${args[0]}(\r|$)`)

  const newFile = data.toString().replace(match, ``)

  fs.writeFile("notredeemed.txt", newFile, "utf8", function (err) {
    if (err) return console.log(err)
    console.log("true")
  })
})

Javascript相关问答推荐

有Angular 的material .未应用收件箱中的价值变化

调用removeEvents不起作用

在vercel throws上部署带有gunjs的sveltekit应用无法找到模块./' lib/文本编码'

如何修复我的js构建表每当我添加一个额外的列作为它的第一列?

仅针对RTK查询中的未经授权的错误取消maxRetries

将字符串UTC Date转换为ngx—counting leftTime配置值的数字

你怎么看啦啦队的回应?

如何调用名称在字符串中的实例方法?

如何根据当前打开的BottomTab Screeb动态加载React组件?

用于编辑CSS样式的Java脚本

用于在路径之间移动图像的查询

向数组中的对象添加键而不改变原始变量

获取';无法解决导入和导入";slick-carousel/slick/slick-theme.css";';错误

按什么顺序接收`storage`事件?

在不扭曲纹理的情况下在顶点着色器中旋转UV

输入的值的类型脚本array.排序()

如果我的列有条件,我如何呈现图标?

我们是否可以在reactjs中创建多个同名的路由

Google OAuth 2.0库和跨域开放程序的问题-策略错误

单击子按钮时将活动切换类添加到父分区