2010-12-30 23 views

risposta

174

Il seguente farebbe ma solo andrà a sostituire un'occorrenza:

"string".replace('/', 'ForwardSlash'); 

Per una sostituzione globale, o se si preferisce le espressioni regolari, basta per sfuggire alla barra:

"string".replace(/\//g, 'ForwardSlash'); 
+3

Il primo snippet non esegue la sostituzione globale. Non troppo sicuro di come fare la sostituzione globale del modo non regex. – BoltClock

+0

Ah, giusto, non l'ho provato con più di un taglio. Potrebbe essere fatto con '" string ".replace ('/', 'ForwardSlash', 'g')' ma questo è un argomento non standard che funziona solo in Firefox. – Seldaek

+1

'" string ".replace (/ \ // g, 'ForwardSlash');' funziona ma rimuove il/g da questo e non funziona. – johntrepreneur

22

Utilizzare un regex letterale con il modificatore g e sfuggire alla barra con una barra rovesciata in modo da non scontrarsi con i delimitatori.

var str = 'some // slashes', replacement = ''; 
var replaced = str.replace(/\//g, replacement); 
3

È questo quello che vuoi?

'string with/in it'.replace(/\//g, '\\'); 
8

Senza utilizzare regex (anche se lo farei solo se la stringa di ricerca è l'input dell'utente):

var str = 'Hello/ world/ this has two slashes!'; 
alert(str.split('/').join(',')); // alerts 'Hello, world, this has two slashes!' 
0
var str = '/questions'; // input: "/questions" 
while(str.indexOf('/') != -1){ 
    str = str.replace('/', 'http://stackoverflow.com/'); 
} 
alert(str); // output: "http://stackoverflow.com/questions" 

La regex proposta /\//g non ha funzionato per me; il resto della linea (//g, replacement);) è stato commentato.

+1

Si noti che non sono sicuro di come le prestazioni di questo confronto la soluzione split/join dell'array proposta. –

+0

... inciampato su questo ... prova IDE diversi usando l'evidenziazione della sintassi più intelligente. Non fare affidamento sui colori del tuo editor di codice, ma credi nella potenza dei parser di stato che simulano correttamente il tuo codice in fase di runtime. – soletan

3

Questo ha funzionato per me nel trasformare "//" in appena "/".

str.replace(/\/\//g, '/'); 
1

Hi una piccola correzione nel script di cui sopra .. sopra sceneggiatura saltando il primo carattere quando si visualizza l'output.

function stripSlashes(x) 
{ 
var y = ""; 
for(i = 0; i < x.length; i++) 
{ 
    if(x.charAt(i) == "/") 
    { 
     y += ""; 
    } 
    else 
    { 
     y+= x.charAt(i); 
    } 
} 
return y; 
} 
2

È necessario avvolgere la barra in avanti per evitare problemi di browser incrociato o // commento.

str = 'this/that and/if'; 

var newstr = str.replace(/[/]/g, 'ForwardSlash'); 
Problemi correlati