使用节点js替换html文件中的多个字符串

时间:2019-03-06 21:08:25

标签: javascript node.js writefile

我正在尝试创建一个工具,使我可以快速更新html文件中的多个文本字符串。我这样做是通过搜索具有特定ID的标签的内容,然后替换其文本内容。我有很多工作,但是我不确定如何启用它以将多个替换项写入文件。实际上,它只运行了我的最后一个替换项。

这就是我所拥有的:

var fs = require('fs')
fs.readFile('sample.html', 'utf8', function (err,data) {
  if (err) {
    return console.log(err);
  }

  var title1 = "boogers"
  var text1 = "ronald mcdonald";

  var result = data.replace(/<div id="text1">(.*)<\/div>/g, '<div id="text1">' + text1 + '</div>'); 
  var result = data.replace(/<title>(.*)<\/title>/g, '<title>' + title1 + '</title>'); 
    fs.writeFile('sample.html', result, 'utf8', function (err) {
     if (err) return console.log(err);
  }); 
});

在上面的代码中,它将替换标题的内容,而不是div标签的内容。我想这是一个非常基本的修复程序,但是我是Node js和javascript的新手。感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

您两次“创建”变量结果,并将替换项归因于数据两次。因此,在第二个属性中,您放宽了之前所做的替换。试试这个:

fs.readFile('sample.html', 'utf8', function (err,data) {
  if (err) {
    return console.log(err);
  }

  var title1 = "boogers"
  var text1 = "ronald mcdonald";

  var result = data.replace(/<div id="text1">(.*)<\/div>/g, '<div id="text1">' + text1 + '</div>'); 
  result = result.replace(/<title>(.*)<\/title>/g, '<title>' + title1 + '</title>'); 
    fs.writeFile('sample.html', result, 'utf8', function (err) {
     if (err) return console.log(err);
  }); 
});

答案 1 :(得分:0)

只需使用“ // g”全局方法

<body>
  <div id="main">MAIN
    <div id="parent">parent
      <div id="child1">child1</div>
      <div id="child2">child2</div>
      <div id="child3">child3</div>
    </div>
  </div>

结果将为:ssssssssscccccsssssssssss