2012-11-20 43 views
6

Tôi cần đọc một tệp và thay thế một số văn bản trong tệp đó bằng nội dung động. Khi nào tôi đã thử string.replace nó không hoạt động cho dữ liệu mà tôi đọc từ tệp Nhưng cho chuỗi nó đang làm việc.Tôi đang sử dụng node.js và thể hiện.string.replace không hoạt động trong máy chủ tốc độ 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); 
    } 
}); 

Output:

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

Trả lời

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

Bạn đang chuyển một chuỗi thay vì regex đến lần thay thế đầu tiên và không khớp với chuỗi vì trường hợp khác. Ngay cả khi nó đã khớp, bạn không được gán lại giá trị được sửa đổi này cho msg. Điều này là lạ, bởi vì bạn đang làm mọi thứ một cách chính xác cho tmp.

1

replace() trả về một chuỗi mới với chuỗi con thay thế, vì vậy bạn phải gán cho một biến để truy cập nó. Nó không làm thay đổi chuỗi gốc.

Bạn muốn viết chuỗi được chuyển đổi trở lại tệp của mình.

3

Bạn cần chỉ định biến cho .replace() trả về chuỗi. Trong trường hợp của bạn, bạn cần phải làm như thế nào, 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

Nhờ tất cả ... Tôi đã it..I am mới để javascript .. – Damodaran

Các vấn đề liên quan