Respuestas:
Lo siguiente funcionaría, pero solo reemplazará una ocurrencia:
"string".replace('/', 'ForwardSlash');
Para un reemplazo global, o si prefiere expresiones regulares, solo tiene que escapar de la barra:
"string".replace(/\//g, 'ForwardSlash');
"string".replace('/', 'ForwardSlash', 'g')pero ese es un argumento no estándar que solo funciona en Firefox afaik.
"string".replace(/\//g, 'ForwardSlash');funciona pero elimina el / g de esto y no funciona.
/. Sin la g solo reemplaza una instancia. Y si elimina /g, rompe la expresión regular por completo ya que el último / es el delimitador final.
Sin usar regex (aunque solo haría esto si la cadena de búsqueda es entrada del usuario):
var str = 'Hello/ world/ this has two slashes!';
alert(str.split('/').join(',')); // alerts 'Hello, world, this has two slashes!'
Hola, una pequeña corrección en la secuencia de comandos anterior ... la secuencia de comandos anterior omite el primer carácter al mostrar la salida.
function stripSlashes(x)
{
var y = "";
for(i = 0; i < x.length; i++)
{
if(x.charAt(i) == "/")
{
y += "";
}
else
{
y+= x.charAt(i);
}
}
return y;
}
var str = '/questions'; // input: "/questions"
while(str.indexOf('/') != -1){
str = str.replace('/', 'http://stackoverflow.com/');
}
alert(str); // output: "http://stackoverflow.com/questions"
La expresión regular propuesta /\//gno funcionó para mí; el resto de la línea ( //g, replacement);) fue comentado.
Esta es la idea de Christopher Lincolns pero con el código correcto:
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;
}
Ejemplo de uso:
var somevariable = replace('//\\\/\/sdfas/\/\/\\\////','\/sdf','replacethis\');
El reemplazo global de cadenas de Javascript es excesivamente complicado. Esta función resuelve ese problema. Probablemente haya un pequeño impacto en el rendimiento, pero estoy seguro de que es insignificante.
Heres una función alternativa , se ve mucho más limpia, pero en promedio es de 25 a 20 por ciento más lenta que la función anterior:
function replace(str,find,replace){
if (find !== ""){
str = str.toString().split(find).join(replace);
}
return str;
}