2011-11-10 29 views
5

Tôi có chuỗi sau:toàn cầu Replace with js

[27564][85938][457438][273][48232] 

Tôi muốn thay thế tất cả các [với ''. Tôi đã thử những điều sau nhưng đã không hoạt động:

var str = '[27564][85938][457438][273][48232]' 
var nChar = '['; 
var re = new RegExp(nChar, 'g')  
var visList = str.replace(re,''); 

Tôi đang làm gì sai ở đây?

Rất cám ơn trước.

+0

'.place (/ \ [/ g, '')' –

+0

Tại sao bạn sử dụng 'RegExp' thay vì' /.../ g'? Giá trị của nChar có thay đổi không? –

Trả lời

7

Bạn cần phải thoát khỏi [ nếu không nó được hiểu như là sự khởi đầu của một character class:

var nChar = '\\['; 

Nếu nchar là một biến (và tôi cho rằng đó là nếu không sẽ có ít điểm trong việc sử dụng RegExp thay vì /.../g) sau đó bạn có thể tìm thấy câu hỏi này hữu ích:

+0

Làm việc hoàn hảo .. cảm ơn nhiều ..! – neojakey

1
var string = "[27564][85938][457438][273][48232]"; 
alert(string.replace(/\[/g, '')); //outputs 27564]85938]457438]273]48232] 

Tôi đã thoát ký tự [ và sử dụng cờ toàn cầu để thay thế tất cả các phiên bản của ký tự.

0

Tôi đã gặp sự cố này ngay hôm nay. Yêu cầu thay thế tất cả "C++" trong chuỗi nhập của người dùng. Bởi vì "+" có ý nghĩa trong biểu thức Reg, string.replace không thành công. Vì vậy, tôi đã viết một hàm đa thay thế cho chuỗi js. Hy vọng điều này có thể giúp đỡ.

String.prototype.mreplace = function (o, n) { 
    var off = 0; 
    var start = 0; 
    var ret = ""; 
    while(true){ 
     off = this.indexOf(o, start); 
     if (off < 0) 
     { 
      ret += this.substring(start, this.length); 
      break; 
     } 
     ret += this.substring(start, off) + n; 
     start = off + o.length; 
    } 
    return ret; 
} 

Ví dụ: "ababc" .mreplace ("a", "a--"); // trả về "a - ba - bc"

+0

ps: Tôi ghét regexp. – jarjar