मान लीजिए, हमें एक स्ट्रिंग.प्रोटोटाइप फ़ंक्शन लिखना है जो तीन तर्कों में लेता है।
- पहला तर्क स्ट्रिंग है जिसे सबस्ट्रिंग के लिए खोजा जाना चाहिए
- दूसरा तर्क वह स्ट्रिंग है, जिसके घटित होने से स्ट्रिंग को हटाया जाना है
- तीसरा तर्क एक संख्या है जैसे n, स्ट्रिंग से हटाए जाने वाले सबस्ट्रिंग की nवीं घटना।
यदि स्ट्रिंग से सबस्ट्रेट को हटाना सफल रहा, तो फ़ंक्शन को नई स्ट्रिंग वापस करनी चाहिए, अन्यथा इसे सभी मामलों में -1 वापस करना चाहिए।
उदाहरण
निम्नलिखित कोड है -
const str = 'jkdsttjkdsre'; const subStr = 'jk'; 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++; } } String.prototype.removeStr = removeStr; console.log(str.removeStr(subStr, num));
यह फ़ंक्शन सबसे पहले जांचता है:यदि सबस्ट्रेट की एक भी घटना नहीं है तो हमें बाहर निकलना चाहिए और -1
वापस आना चाहिएफिर यह स्ट्रिंग में subStr की घटनाओं की संख्या को रिकॉर्ड करने के लिए स्लाइडिंग विंडो एल्गोरिदम का उपयोग करता है (विंडो का आकार subStr की लंबाई के बराबर होता है)
प्रारंभ में, हम सबसे बाईं खिड़की से शुरू करते हैं फिर हम अपनी खिड़की को तब तक खिसकाते रहते हैं जब तक कि खिड़की का अंत मूल स्ट्रिंग के अंत तक नहीं पहुंच जाता। यदि हमारे तरीके से, घटनाओं की संख्या आवश्यक घटना के बराबर होती है, तो हम उस घटना को स्ट्रिंग से ट्रिम कर देते हैं और इस प्रकार प्राप्त नई स्ट्रिंग को वापस कर देते हैं।
यदि हम पूरी स्ट्रिंग के माध्यम से पुनरावृति करते हैं, तो इसका मतलब है कि स्ट्रिंग में subStr की पर्याप्त घटनाएँ नहीं हैं और उस स्थिति में हमें -1 लौटना चाहिए और फ़ंक्शन से बाहर निकलना चाहिए।
अंत में, हम removeStr प्रॉपर्टी को String.prototype में जोड़ते हैं ताकि हम इसे एक स्ट्रिंग फ़ंक्शन के रूप में कॉल कर सकें।
आउटपुट
यह कंसोल में निम्न आउटपुट उत्पन्न करेगा -
jkdsttdsre