Risposte:
Farebbe quanto segue ma sostituirà solo un'occorrenza:
"string".replace('/', 'ForwardSlash');
Per una sostituzione globale, o se preferisci le espressioni regolari, devi solo sfuggire alla barra:
"string".replace(/\//g, 'ForwardSlash');
"string".replace('/', 'ForwardSlash', 'g')ma questo è un argomento non standard che funziona solo con Firefox afaik.
"string".replace(/\//g, 'ForwardSlash');funziona ma rimuove / g da questo e non funziona.
/. Senza g sostituisce solo un'istanza. E se rimuovi /g, rompi completamente il regex poiché l'ultimo / è il delimitatore di fine.
Senza usare 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!'
var str = '/questions'; // input: "/questions"
while(str.indexOf('/') != -1){
str = str.replace('/', 'http://stackoverflow.com/');
}
alert(str); // output: "http://stackoverflow.com/questions"
Il regex proposto /\//gnon ha funzionato per me; il resto della riga ( //g, replacement);) è stato commentato.
Questa è l'idea di Christopher Lincolns ma con il codice corretto:
function replace(str,find,replace){
if (find != ""){
str = str.toString();
var aStr = str.split(find);
for(var i = 0; i < aStr.length; i++) {
if (i > 0){
str = str + replace + aStr[i];
}else{
str = aStr[i];
}
}
}
return str;
}
Esempio di utilizzo:
var somevariable = replace('//\\\/\/sdfas/\/\/\\\////','\/sdf','replacethis\');
La sostituzione di stringhe globali Javascript è inutilmente complicata. Questa funzione risolve quel problema. Probabilmente c'è un piccolo impatto sulle prestazioni, ma sono sicuro che sia trascurabile.
Ecco una funzione alternativa , sembra molto più pulita, ma è mediamente più lenta di circa il 25-20% rispetto alla funzione sopra:
function replace(str,find,replace){
if (find !== ""){
str = str.toString().split(find).join(replace);
}
return str;
}