Respostas:
O seguinte faria, mas apenas substituirá uma ocorrência:
"string".replace('/', 'ForwardSlash');
Para uma substituição global, ou se você preferir expressões regulares, basta escapar da barra:
"string".replace(/\//g, 'ForwardSlash');
"string".replace('/', 'ForwardSlash', 'g')
mas esse é um argumento não padrão que funciona apenas no Firefox.
"string".replace(/\//g, 'ForwardSlash');
funciona, mas remova o / g disso e não funciona.
/
. Sem o g, ele substitui apenas uma instância. E se você remover, /g
interrompa o regex completamente desde o último / é o delimitador final.
Sem usar o regex (embora eu faria isso apenas se a string de pesquisa fosse entrada do usuário):
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"
O regex proposto /\//g
não funcionou para mim; o restante da linha ( //g, replacement);
) foi comentado.
Essa é a idéia de Christopher Lincolns, mas com o código correto:
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;
}
Exemplo de uso:
var somevariable = replace('//\\\/\/sdfas/\/\/\\\////','\/sdf','replacethis\');
A substituição global de cadeias Javascript é desnecessariamente complicada. Esta função resolve esse problema. Provavelmente, há um pequeno impacto no desempenho, mas tenho certeza que é insignificante.
Heres uma função alternativa , parece muito mais limpa, mas é em média cerca de 25 a 20% mais lenta que a função acima:
function replace(str,find,replace){
if (find !== ""){
str = str.toString().split(find).join(replace);
}
return str;
}