मान लीजिए, हमने एक पॉलीफिल फ़ंक्शन 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 की लंबाई के बराबर होता है)।
- प्रारंभ में हम बाएं-most विंडो से शुरू करते हैं फिर हम अपनी विंडो को तब तक स्लाइड करते रहते हैं जब तक विंडो का अंत मूल स्ट्रिंग के अंत तक नहीं पहुंच जाता।
- यदि हमारे रास्ते में, ऑकरेंस की गिनती आवश्यक ऑकरेंस के बराबर होती है, तो हम उस ऑकरेंस को स्ट्रिंग से ट्रिम करते हैं और इस प्रकार प्राप्त नई स्ट्रिंग को लौटाते हैं।
- यदि हम पूरी स्ट्रिंग के माध्यम से पुनरावृति करते हैं, तो इसका मतलब है कि स्ट्रिंग में subStr के पर्याप्त ऑकरेंस नहीं हैं और उस स्थिति में हमें -1 लौटाकर फ़ंक्शन से बाहर निकलना चाहिए।
अंत में, हम removeStr प्रॉपर्टी को String.prototype में जोड़ते हैं ताकि हम इसे स्ट्रिंग फ़ंक्शन के रूप में कॉल कर सकें।