मान लीजिए, हमने एक पलिफिल फ़ंक्शन removeStr() बनाया है जो तीन आर्गुमेंट्स लेता है, अर्थात् -
subStr → जिसका अकारेंस स्ट्रिंग से हटाया जाना है
num → यह एक नंबर है (num)वां अकारेंस subStr का स्ट्रिंग से हटाया जाना है
यदि स्ट्रिंग से subStr को हटाना सफल रहा तो फ़ंक्शन को नया स्ट्रिंग लौटाना चाहिए, अन्यथा सभी मामलों में -1 लौटाना चाहिए।
उदाहरण के लिए -
const str = 'drsfgdrrtdr'; console.log(str.removeStr('dr', 3));
अपेक्षित आउटपुट -
'drsfgdrrt'
आइए इसके लिए कोड लिखें -
उदाहरण
const str = 'drsfgdrrtdr'; const subStr = 'dr'; const num = 2; removeStr = function(subStr, num){ if(!this.includes(subStr)){ return -1; } let start = 0, end = subStr.length; let occurences = 0; for(; ;end < this.length){ if(this.substring(start, end) === subStr){ occurences++; }; if(occurences === num){ return this.substring(0, start) + this.substring(end, this.length); }; end++; start++; } return -1; } String.prototype.removeStr = removeStr; console.log(str.removeStr(subStr, num));
आउटपुट
कंसोल में इस कोड का आउटपुट होगा -
drsfgrtdr
कोड को समझना -
removeStr() फ़ंक्शन सबसे पहले जांचता है कि क्या subStr का एक भी अकारेंस नहीं है तो हमें बाहर निकलकर -1 लौटाना चाहिए।
फिर यह स्लाइडिंग विंडो एल्गोरिथ्म का उपयोग करता है ताकि स्ट्रिंग में subStr के अकारेंस की संख्या रिकॉर्ड की जा सके (विंडो का आकार subStr की लंबाई के बराबर हो)।
प्रारंभ में हम बाएं सबसे विंडो से शुरू करते हैं फिर हम अपनी विंडो को तब तक स्लाइड करते रहते हैं जब तक विंडो का अंत मूल स्ट्रिंग के अंत तक नहीं पहुंच जाता।
यदि हमारे रास्ते में, अकारेंस की संख्या आवश्यक अकारेंस के बराबर होती है, तो हम उस अकारेंस को स्ट्रिंग से काटते हैं और इस प्रकार प्राप्त नई स्ट्रिंग को लौटाते हैं।
यदि हम पूरी स्ट्रिंग के माध्यम से पुनरावृति करते हैं, तो इसका मतलब है कि स्ट्रिंग में subStr के पर्याप्त अकारेंस नहीं हैं और जिस स्थिति में हमें -1 लौटाना चाहिए और फ़ंक्शन से बाहर निकलना चाहिए
अंत में, हम String.prototype में removeStr प्रॉपर्टी जोड़ते हैं ताकि हम इसे स्ट्रिंग फ़ंक्शन के रूप में कॉल कर सकें।