मैंने इसे भागों में तोड़ने के लिए एक स्ट्रिंग को तोड़ने के लिए एक फ़ंक्शन बनाया। मैंने एमडीएन पर पढ़ा कि कोष्ठक में रेगेक्स डालकर मैं इसे बाद में $1 का उपयोग करके संदर्भित कर सकता हूं लेकिन किसी कारण से मेरा कोड काम नहीं कर रहा है। मैं चाहता हूं कि यह फ़ंक्शन 'url this' लौटाए लेकिन यह '$ 1his' वापस आ गया है।

कृपया सहायता कीजिए!

const someFunction = str => {
 return str.replace(/([A-Z]+)/g,('$1'.slice(0,-1).toLowerCase() + ' ' + '$1'.slice(-1).toLowerCase()));
  }
console.log(someFunction('URLThis'))
0
Rohit Kumar 23 पद 2017, 15:45

2 जवाब

सबसे बढ़िया उत्तर

आप दूसरे पैरामीटर में फ़ंक्शन पास कर सकते हैं string#replace.

const someFunction = str => {
 return str.replace(/[A-Z]+/g, (match) => {
  return match.slice(0,-1).toLowerCase() + ' ' + match.slice(-1).toLowerCase();
 });
}
console.log(someFunction('URLThis'))
2
Hassan Imam 23 पद 2017, 16:00

आप प्रतिस्थापन के परिणाम में हेरफेर करने के लिए दूसरे पैरामीटर के रूप में एक फ़ंक्शन का उपयोग करना चाहते हैं। एमडीएन से String.prototype.replace()< /ए>:

क्योंकि हम अंतिम प्रतिस्थापन से पहले मैच के परिणाम को और बदलना चाहते हैं, हमें एक फ़ंक्शन का उपयोग करना चाहिए। यह toLowerCase() विधि से पहले मैच के मूल्यांकन को बाध्य करता है। यदि हमने बिना किसी फ़ंक्शन के मैच का उपयोग करके ऐसा करने का प्रयास किया था, तो toLowerCase() का कोई प्रभाव नहीं पड़ेगा।

ऐसा इसलिए है क्योंकि पैटर्न के रूप में वर्णों का उपयोग करने से पहले '$&'.toLowerCase() का मूल्यांकन पहले स्ट्रिंग अक्षर के रूप में किया जाएगा (जिसके परिणामस्वरूप वही '$&') होगा।

1
Robbie Ferrero 23 पद 2017, 16:16