2012-01-19 18 views
5

स्ट्रिंग 'Hello ?, welcome to ?' और सरणी ['foo', 'bar'] को देखते हुए, मैं जावास्क्रिप्ट के साथ कोड की एक पंक्ति में स्ट्रिंग 'Hello foo, welcome to bar' कैसे प्राप्त करूं (संभवतः jQuery, अंडरस्कोर, आदि के साथ)?किसी सरणी के मानों के साथ स्ट्रिंग के अंदर प्रश्न चिह्नों को कैसे प्रतिस्थापित करें?

+0

क्या उन्हें प्रश्न चिह्न होना चाहिए? – Paul

+1

इसे एक लाइन क्यों होना चाहिए? –

उत्तर

20
var s = 'Hello ?, welcome to ?'; 
var a = ['foo', 'bar']; 
var i = 0; 
alert(s.replace(/\?/g,function(){return a[i++]})); 
+2

+1, मुझे यह भी पता नहीं चला कि प्रतिस्थापन एक समारोह ले सकता है। –

+2

+1 आप 'i'' को 'वापसी a.shift()' का उपयोग करके भी हटा सकते हैं (हालांकि 'ए' बाद में खाली होगा)। – pimvdb

+1

@Andrew लगभग कुछ भी एक समारोह ले सकते हैं। –

7

मूर्ख की तरह यह सब एक लाइन पर डाल करने के लिए है, लेकिन:

var str = 'Hello ?, welcome to ?', 
    arr = ['foo', 'bar'], 
    i = 0; 


while(str.indexOf("?") >= 0) { str = str.replace("?", arr[i++]); } 
+1

मूर्खतापूर्ण नहीं - यह सुंदर कोड –

+1

अधिक सुंदर होगा यदि आप sis str = str.replace ("?", Arr [i ++]); –

+0

हाँ, मैं बस खुद को सोच रहा था .. अद्यतन कर रहा हूं ... और टिप्पणी के लिए धन्यवाद! –

3

आप vsprintf इस्तेमाल कर सकते हैं। यद्यपि यदि आप स्प्रिंटफ शामिल करते हैं, तो यह एक से अधिक पंक्ति है।

vsprintf('Hello %s, welcome to %s', [foo, bar]); 
संबंधित मुद्दे

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