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