2012-11-20 11 views
6

Ich muss eine Datei lesen und einige Texte in dieser Datei mit dynamischem Inhalt ersetzen. Wenn ich string.replace versuchte, funktioniert es nicht für die Daten, die ich aus der Datei gelesen habe .Aber für die Zeichenfolge funktioniert es. Ich verwende node.js und express.string.replace funktioniert nicht in node.js express server

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

Ausgang:

temp: Hello Myname, would you like some tea? 
msg: Hello %NAME%, would you like some %DRINK%? 

Antwort

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

Sie vorbei eine Zeichenfolge anstelle eines regex auf die erste ersetzen, und es stimmt nicht überein, weil der Fall anders. Auch wenn dies der Fall ist, weisen Sie diesen geänderten Wert nicht msg zu. Das ist seltsam, weil Sie alles richtig für tmp machen.

1

replace() gibt einen neuen String mit dem ersetzten Teil, so dass Sie, dass auf eine Variable, um sie für den Zugriff zuweisen müssen. Es mutiert nicht die ursprüngliche Zeichenfolge.

Sie möchten die umgewandelte Zeichenfolge zurück in Ihre Datei schreiben.

3

Sie müssen eine Variable für .replace() zuweisen, die die Zeichenfolge zurückgibt. In Ihrem Fall müssen Sie sich wie zu tun msg = msg.replace("%name%", "myname");

Code:

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

Danke an alle ... Ich habe it..I Javascript ist hier .. – Damodaran