6

ファイルを読み取り、そのファイル内の一部のテキストを動的コンテンツに置き換える必要があります.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%?
4

3 に答える 3

13
msg = msg.replace(/%name%/gi, "myname");

最初の置換に正規表現の代わりに文字列を渡していますが、大文字と小文字が異なるため一致しません。一致したとしても、この変更された値を に再割り当てしていませんmsg。に対してすべてを正しく行っているため、これは奇妙ですtmp

于 2012-11-20T06:54:59.453 に答える
4

.replace()文字列を返す変数を割り当てる必要があります。あなたの場合、次のようにする必要があります。msg = msg.replace("%name%", "myname");

コード:

fs.readFile('test.html', function read(err, data) {
    if (err) {
                console.log(err);
    }
    else {
        var msg = data.toString();
        msg = msg.replace("%name%", "myname"); 
        msg = 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);
    }
});
于 2012-11-20T06:55:43.557 に答える
2

replace()置換された部分文字列を含む新しい文字列を返すため、変数にアクセスするには、それを変数に割り当てる必要があります。元の文字列を変更しません。

変換された文字列をファイルに書き戻す必要があります。

于 2012-11-20T06:53:47.560 に答える