2012-06-14 11 views
5

Me preguntaba la mejor manera de reemplazar las cerillas en una cadena.Iterar a través de JavaScript regex coincidencias para modificar la cadena original

value.replace("bob", "fred"); 

por ejemplo, funciona, pero quiero que cada instancia de "sacudida" que será reemplazada por una cadena aleatoria que he almacenado en una matriz. Solo al hacer una coincidencia de expresiones regulares me devuelve el texto correspondiente, pero no me permite reemplazarlo en la cadena original. ¿Hay una manera simple de hacer esto?

Por ejemplo, yo esperaría que la cadena:

"Bob went to the market. Bob went to the fair. Bob went home" 

para que aparezca tal como

"Fred went to the market. John went to the fair. Alex went home" 

Respuesta

4

Se puede reemplazar con el valor de una llamada de función:

var names = ["Fred", "John", "Alex"]; 
var s = "Bob went to the market. Bob went to the fair. Bob went home"; 
s = s.replace(/Bob/g, function(m) { 
    return names[Math.floor(Math.random() * names.length)]; 
}); 

Este da por ejemplo:

"John went to the market. Fred went to the fair. John went home" 
+0

Whoa. Eso es perfecto. ¡Gracias! – Grazfather

Cuestiones relacionadas