2012-11-20 11 views
6

Ho bisogno di leggere un file e sostituire alcuni testi in quel file con contenuto dinamico.quando ho provato string.replace non funziona per i dati che ho letto dal file .Ma per la stringa funziona. Sto usando node.js ed express.string.replace non funziona nel server express 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); 
    } 
}); 

uscita:

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

risposta

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

Stai passando una stringa invece di una regex per la prima sostituzione, e non corrisponde perché il caso è diverso. Anche se corrispondesse, non stai riassegnando questo valore modificato a msg. Questo è strano, perché stai facendo tutto correttamente per tmp.

1

replace() restituisce una nuova stringa con le sottostringhe sostituiti, quindi è necessario assegnare tale ad una variabile al fine di accedervi. Non muta la stringa originale.

Si vorrebbe scrivere la stringa trasformata di nuovo nel file.

3

È necessario assegnare una variabile per .replace() che restituisce la stringa. Nel tuo caso, è necessario fare come, msg = msg.replace("%name%", "myname");

Codice:

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

Grazie a tutti ... mi sono it..I Sono nuovo di javascript .. – Damodaran