2011-11-10 8 views
5

ho la seguente stringa:globale Sostituire con js

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

voglio sostituire tutte le [con ''. Ho provato quanto segue ma non ha funzionato:

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

cosa sto facendo di sbagliato qui?

Molte grazie in anticipo.

+0

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

+0

Perché stai usando 'RegExp' invece di' /.../ g'? Potrebbe cambiare il valore di nChar? –

risposta

7

avete bisogno di sfuggire alla [ altrimenti viene interpretato come l'inizio di una character class:

var nChar = '\\['; 

Se nChar è una variabile (e suppongo che sia altrimenti non ci sarebbe poco senso usando RegExp invece di /.../g) allora si può trovare questa domanda utile:

+0

Ha funzionato perfettamente .. molte grazie ..! – neojakey

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

Sono sfuggito al carattere [ e ho utilizzato una bandiera globale per sostituire tutte le occorrenze del carattere.

0

Ho incontrato questo problema oggi. Il requisito è sostituire tutto "C++" nella stringa di input dell'utente. Poiché "+" ha un significato nell'espressione Reg, string.replace ha esito negativo. Quindi ho scritto una funzione di sostituzione multipla per la stringa js. Spero che questo possa aiutare.

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

Esempio: "ababc" .mreplace ("a", "a--"); // restituisce "a - ba - bc"

+0

ps: odio regexp. – jarjar

Problemi correlati