2012-06-14 9 views
5

संशोधित करने के लिए जावास्क्रिप्ट रेगेक्स मैचों के माध्यम से Iterate बस स्ट्रिंग पर स्थान मैचों में प्रतिस्थापित करने का सबसे अच्छा तरीका सोच रहा है।मूल स्ट्रिंग

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

उदाहरण के लिए, काम करता है, लेकिन मैं "बॉब" के प्रत्येक उदाहरण के एक यादृच्छिक स्ट्रिंग मैं एक सरणी में संग्रहीत किए गए साथ प्रतिस्थापित किया जा करना चाहते हैं। बस रेगेक्स मैच करने से मुझे मिलान करने वाला टेक्स्ट मिलता है, लेकिन मुझे मूल स्ट्रिंग में इसे बदलने की अनुमति नहीं देता है। क्या ऐसा करने के लिए एक सरल तरीका है?

उदाहरण के लिए मैं स्ट्रिंग उम्मीद करेंगे:

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

शायद के रूप में

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

उत्तर

4

पॉप करने के लिए आप एक समारोह कॉल के महत्व के साथ की जगह ले सकता:

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

यह उदाहरण के लिए देता है:

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

वाह। यह उत्तम है। धन्यवाद! – Grazfather

संबंधित मुद्दे