2012-06-14 12 views
5

Yerine koymanın en iyi yolunun bir dizeyle eşleştiğini merak ediyorum.Orijinal dize değiştirmek için Javascript regex eşleşmelerini yineleyin

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

örneğin çalışır, ama "bob" her örneği Bir dizide sakladığınız rastgele dize ile değiştirilmelidir istiyorum. Sadece bir regex eşleştirmesi bana eşleşen metni döndürür, ancak orijinal dizede değiştirmeme izin vermez. Bunu yapmanın kolay bir yolu var mı?

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

belki

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

cevap

4

olarak yeni pencerede açmak için bir işlev çağrısı değerle değiştirebilirsiniz:

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)]; 
}); 

Bu benim dize beklenebilir Örneğin

örneğin:

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

Whoa. Bu harika. Teşekkürler! – Grazfather