Replace all en Javascript
Hace unos días trate de ayudar con algo muy simple en Javascript y me encontre con la sorpresa que la funcion nativa de replace de javascript solo remplaza la primera coincidencia y no sigue buscando en el string(y por ende tampoco remplazando.
Por lo que aqui hicimos una pequeña funcion de forma recursiva para reemplazar todas las ocurrencias en un String.
El ejemplo en particular era que teniamos que sacar todos los puntos de un numero.
>>>replaceAll("123.345.567", ".", "" ); >>"123345567"-- Atte. Victor Hugo Saavedra http://vhspiceros.blogspot.com
foo.split('.').join('')
ResponderEliminarQue elegancia ;) gracias man
Eliminarclase de brujería, aun hoy sigue siendo infalible
Eliminarmuy buen truco
EliminarGracias, me sirivio mucho.
Eliminarhttp://nubesito.com
Gracias
EliminarYou is the god
EliminarPerfect jou!
EliminarOLV que paronon te la rifaste
Eliminarfoo.replace(/\./g, '')
ResponderEliminar"g" stands for global
Is very good. This solution is very fast to implement.
ResponderEliminarThanks.
--
Atte.
Victor Hugo saavedra
http://vhspiceros.blogspot.com
Muchas gracias!!!! La verdad es que me vino genial. Saludos!!
ResponderEliminar:)
muy ytil!!! gracias!!!!
ResponderEliminarLa funcion podria entrar en un bucle infinito
ResponderEliminarreplaceAll( text, busca, reemplaza )
tiene la restriccion que el texto del parametro busca no puede estar dentro lo que se quiere reemplazar
No funciona para un caso similar a
replaceAll( "Hola mundo!", "!", "!!" )
Buclazo infinito!!! XD
EliminarMucho mejor con una RegExp:
foo.replace(/\./g, '')
efectivamente tiene esa limitancia.
ResponderEliminares mucho mejor hacer foo.split('.').join('') como puse en un comentario mas arriba,
string.replace(/\./g, '');
ResponderEliminarMuchas gracias!!! Me ha venido fenomenal
ResponderEliminarLa funcion replace si puede sustituir todos los caracteres, no solo el primero, escribiendo el siguiente codigo:
ResponderEliminarcadena = cadena.replace(/buscar/g, "reemplazar")
Y esta comprobado.
Un saludo
facil y efectivo gracias..
ResponderEliminarLo utilize para revertir desde formtao español de numeros, es decir, con . milesimas y , decimales, a formato ingles solo con . los decimales
Ej:
75.000,89 => 75000.89
Gracias :)
ResponderEliminarDe nada :D
ResponderEliminarMuchas gracias Victor por tu aporte, lo utilicé con sugarcrm.
ResponderEliminarSugar guarda el valor de un select multiple de esta forma ^valor^,^valor1^ y asi sucesivamente, primero hice un split sobre las comas y después apliqué tu funcion para quitarle los ^.
Gracias.
Excelente Francisco. que bueno que te halla sido de utilidad esta entrada :D
ResponderEliminarExcelente man..(y)
ResponderEliminarY como se puede reemplazar usando variables?
ResponderEliminarvar str="reemplaza las cadenas a buscar";
var buscar="las";
var reemplaza="por";
alert(str.replace(/buscar/gi,reemplaza));
Gracias :=)
ResponderEliminarMuchas gracias, me fue de gran ayuda, tenia que reemplazar en una cadena el simbolo $ por el S/. que es la moneda de perú, pero me encontre que la / javascript me la toma como un limitador
ResponderEliminarRespondiendo a "anonimo" que dijo:
ResponderEliminarLa funcion podria entrar en un bucle infinito
replaceAll( text, busca, reemplaza )
tiene la restriccion que el texto del parametro busca no puede estar dentro lo que se quiere reemplazar
No funciona para un caso similar a
replaceAll( "Hola mundo!", "!", "!!" )
--------
Agregale un "startIndex" al .indexOf para que no busque en los que ya reemplazó:
[js]
function replaceAll( text, busca, reemplaza ){
var idx = text.toString().indexOf(busca);
while (idx != -1) {
text = text.toString().replace(busca,reemplaza);
idx = text.toString().indexOf(busca, idx);
}
return text;
}
[/js]
Gracias tios me sirvio, sois la puta ostia!
ResponderEliminarsi el caracter esta al inicio de la frace y este se repite varias veces no me funciona .replace(/buscar/g,reemplaza) tampoco .split(buscar).join(reemplaza, quisiera hacerlo todo en una linea
ResponderEliminarWindows Live ID requires JavaScript to sign in. This web browser either does not support JavaScript, or scripts are being blocked.
ResponderEliminarTo find out whether your browser supports JavaScript, or to allow scripts, see the browser's online help.
Tratando de entrar a la cuenta de hotmail, alguien puede indicarme que debo hacer?
Muchas gracias!
Tu navegador no soporta Javascript o lo tienes deshabilitado, revisa la configuración del navegador o usa uno que sí soporte Javascript, por ejemplo Google Chrome.
EliminarSaludos!
Thank you very much! So simple and so powerful!
ResponderEliminarPerfecto, ahora podré agregar el caractér a todas las palabras que tengan demasiadas letras. El replace de JS sólo estaba reemplazando la primera ocurrencia.
ResponderEliminarMuy bueno
ResponderEliminaren realidad no es una limitacion, es que no estas escribiendo el regex como se debe :D
ResponderEliminarfijate
var str1 = "1,2,3,4,5,6"
str1.replace(",","") //solo te va a remplazar una coma, ya que al usar comillas se hace entender que buscas un caracter especifico
str1.replace(/,/g,"") al utilizar la combinacion de // con g le indicas que quieres capturar cada caracter..
Gracias por tu comentario
EliminarJodida Hostia me ha resultado
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarSimple y funciona genial.
ResponderEliminar¡Gracias!
Muchas Gracias me saco de un gran inconveniente que tenia. AP
ResponderEliminarMuchas gracias por el código!
ResponderEliminarhermano un monton de gracias, tenia problemas al hacer el set de mi token en local storage de angularjs por alguna se colaban un par de comillas de mas al inicio y al final de mi estring token y tu funcion me soluciono el dia, saludos desde venezuela de @lordcasslos
ResponderEliminarBusque mucho y fuiste la única solición.
ResponderEliminarSaludos y gracias!!
Justo lo que necesitaba. Muy bueno.
ResponderEliminarExcelente! Gracias!
ResponderEliminarmuchas gracias por el aporte
ResponderEliminar