2017-05-09 9 views
0

ref変数をreplace()の内部でどうやって渡すのですか?私は下のコードを試してください。nodejsのfsの.replaceに変数を挿入する方法

var ref = "www.facebook.com"; 

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

    var result = data.replace(/href="'+ref+'"/g, 'href="changeRef"'); 

    fs.writeFile('text.html', result, 'utf8', function (err) { 
     if (err) return console.log(err); 
     next(); 
    }); 

}) 

答えて

0

インライン正規表現の代わりにRegExpクラスを使用してください。

data.replace(new RegExp('href="'+ref+'"', 'g'), ...)

しかし、私はあなたの代わりにコールバックの仕事をするstreamsを使用することをお勧めします。これは次のようなものです:

const through2 = require('through2'); 
const fs = require('fs'); 
const writable = fs.createWriteStream('destPath'); 

fs 
    .createReadStream('path') 
    .pipe(new through2((data, enc, cb) => { 
     const chunk = data.toString(); 
     chunk = chunk.replace(new RegExp('foo', 'g'), 'bar'); 
     cb(null, chunk); 
    })) 
    .pipe(writable); 
+0

ありがとうございます。私は後でこれをやる – JerVi

関連する問題