2011-10-05 21 views
5

निम्नलिखित में एक स्ट्रिंग के प्रत्येक शब्द के पहले अक्षर को कैपिटल करना हालांकि निरर्थक, पूरी तरह से काम करता है:का उपयोग करते हुए की जगह और regex, जावास्क्रिप्ट

'leap of, faith'.replace(/([^ \t]+)/g,"$1");

और प्रिंट "की, विश्वास छलांग", लेकिन में निम्नलिखित :

'leap of, faith'.replace(/([^ \t]+)/g,RegExp.$1); यह प्रिंट "विश्वास विश्वास विश्वास"

परिणामस्वरूप जब मैं की तरह प्रत्येक शब्द के पहले अक्षर को कैपिटल करना चाहते हैं के रूप में:

'leap of, faith'.replace(/([^ \t]+)/g,RegExp.$1.capitalize());

यह काम नहीं करता है। न तो करता है,

'leap of, faith'.replace(/([^ \t]+)/g,"$1".capitalize);

क्योंकि यह शायद समूह के मूल्य प्रतिस्थापन से पहले "$ 1" फ़ायदा उठाने की।

मैं आप "() .replace" के दूसरे तर्क के रूप में एक समारोह पारित कर सकते हैं प्रोटोटाइप भुनाने() विधि

+0

आप '.toUpperCase()' विधि का उपयोग क्यों नहीं करते? –

+1

जो स्ट्रिंग में सभी वर्णों को ऊपरी मामले में परिवर्तित करता है, और ओपी केवल पहले अक्षर को परिवर्तित करना चाहता है। – Pointy

+2

आप 'str.replace (/ \ b [a-z]/g, function() {वापसी तर्क [0] .toUpperCase()} के साथ अपर + आपके उत्तर का उपयोग कर सकते हैं) ' –

उत्तर

11

का उपयोग करके एकरेखीय में ऐसा करना चाहते हैं:

"string".replace(/([^ \t]+)/g, function(_, word) { return word.capitalize(); }); 

तर्कों को समारोह, पहला, पूरा मिलान, और फिर मिलान किए गए समूह हैं। इस मामले में केवल एक समूह ("शब्द") है। फ़ंक्शन का वापसी मान प्रतिस्थापन के रूप में उपयोग किया जाता है।

+0

धन्यवाद। लेकिन जेएस कैसे जानता है कि फ़ंक्शन के दो तर्क आपके द्वारा निर्दिष्ट किए गए एक होंगे? – Daud

+0

?? उह ... मैं सवाल समझ में नहीं आता। जावास्क्रिप्ट "जानता है" क्योंकि यह ठीक है कि ".replace()" विधि निर्दिष्ट और कार्यान्वित की गई है। यदि दूसरा तर्क एक फ़ंक्शन है, तो रनटाइम सिस्टम इसे रेगेक्स मैच के परिणाम से लिया गया तर्क के साथ कॉल करता है। – Pointy

+0

मेरा मतलब है, मैंने मोज़िला संदर्भ पर जांच की है: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/replace और उन्होंने उल्लेख नहीं किया कि रेगेक्स मैच के इन विशेष परिणाम पारित किए जाएंगे 2 तर्क निर्दिष्ट हैं – Daud

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