2012-11-20 14 views
6

ファイルを読み込んで、そのファイルのテキストを動的content.whenで置き換える必要があります。ファイルから読み込んだデータに対してstring.replaceを実行しようとしましたしかし、文字列のために働いています。私はnode.jsを使用しており、表現しています。string.replaceがnode.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, '[email protected]'); 

     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%? 

答えて

11

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

1

replace()置き換えストリングを持つ新しい文字列を返すので、あなたはそれにアクセスするために、変数にそれを割り当てる必要があります。元の文字列に変更はありません。

変換された文字列をファイルに書き戻したいとします。

3

文字列を返す変数.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, '[email protected]'); 

     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); 
    } 
}); 
+0

すべてのおかげで...私はit..IはJavaScriptに新しいですしまいました.. – Damodaran

関連する問題