我需要读取一个文件并用动态内容替换该文件中的一些文本.当我尝试使用string.replace时,它不适用于我从文件中读取的数据.但是它正在工作的字符串.我正在使用节点. js和表达.
fs.readFile('test.html',function read(err,data) { if (err) { console.log(err); } else { var msg = data.toString(); msg.replace("%name%","myname"); msg.replace(/%email%/gi,'example@gmail.com'); temp = "Hello %NAME%,would you like some %DRINK%?"; temp = temp.replace(/%NAME%/gi,"Myname"); temp = temp.replace("%DRINK%","tea"); console.log("temp: "+temp); console.log("msg: "+msg); } });
输出:
temp: Hello Myname,would you like some tea? msg: Hello %NAME%,would you like some %DRINK%?
解决方法
msg = msg.replace(/%name%/gi,"myname");
您将字符串而不是正则表达式传递给第一个替换,并且它不匹配,因为情况不同.即使它确实匹配,您也不会将此修改后的值重新分配给msg.这很奇怪,因为你正在为tmp正确地做所有事情.