"क्या इस स्ट्रिंग में वह शब्द है?" — एक सवाल जो हर शुरुआती को परेशान करता है
\nआप एक स्क्रिप्ट लिख रहे हैं, सर्वर से जवाब प्राप्त कर रहे हैं या बस शहरों की सूची को फ़िल्टर कर रहे हैं। और अचानक आप अटक जाते हैं: जावास्क्रिप्ट में कैसे जाँचें कि क्या किसी स्ट्रिंग में कोई विशिष्ट सबस्ट्रिंग है? यह सवाल Stack Overflow पर एक वास्तविक हिट है, हजारों डेवलपर्स इसे पूछते हैं। और यह व्यर्थ नहीं है: स्ट्रिंग्स किसी भी एप्लिकेशन का आधार हैं, और उनमें सबस्ट्रिंग्स को जल्दी से खोजने की क्षमता एक बुनियादी कौशल है।
\nइस ट्यूटोरियल में, हम तीन कार्यशील तरीकों पर चर्चा करेंगे: सबसे आधुनिक (और सभी को पसंद आने वाले) से लेकर क्लासिक तक। आप जानेंगे कि कब किस विधि का उपयोग करना है, और ऐसा कोड लिखना सीखेंगे जिसे इंटरव्यू में दिखाने में शर्म न आए।
\n\nविधि #1: includes() — सरलता और सुंदरता
\nयदि आप आधुनिक JavaScript (ES6 और उससे ऊपर) में कोड लिख रहे हैं, तो includes() आपका सबसे अच्छा दोस्त है। यह विधि true या false लौटाती है और एक सामान्य अंग्रेजी प्रश्न की तरह पढ़ी जाती है: "क्या स्ट्रिंग में सबस्ट्रिंग शामिल है?"।
सिंटैक्स
\nstring.includes(searchString, position)\n- \n
searchString— वह जो हम खोज रहे हैं (आवश्यक)। \n position— वैकल्पिक पैरामीटर, किस इंडेक्स से खोज शुरू करनी है (डिफ़ॉल्ट 0)। \n
कार्य में उदाहरण
\nconst message = "नमस्ते, दुनिया! JavaScript बहुत अच्छा है।";\n\nconsole.log(message.includes("JavaScript")); // true\nconsole.log(message.includes("Python")); // false\nconsole.log(message.includes("दुनिया", 10)); // false (10वें कैरेक्टर से खोज)\n\nध्यान दें: यह विधि केस-सेंसिटिव है। "javascript" और "JavaScript" अलग-अलग स्ट्रिंग्स हैं। यदि आप केस को अनदेखा करना चाहते हैं, तो दोनों स्ट्रिंग्स को लोअर केस में बदलें:
const text = "हम JavaScript सीख रहे हैं";\nconst keyword = "javascript";\n\nconsole.log(text.toLowerCase().includes(keyword.toLowerCase())); // true\n\n\nकब उपयोग करें
\n- \n
- फॉर्म वैलिडेशन (ईमेल में "@" की जाँच)। \n
- सूची में खोज (उत्पादों को फ़िल्टर करना)। \n
- कोई भी सरल उपस्थिति जाँच। \n
विधि #2: indexOf() — क्लासिक जो कभी खत्म नहीं होता
\nincludes() के आने से पहले, सभी indexOf() का उपयोग करते थे। यह सिर्फ "हाँ/नहीं" नहीं बताता, बल्कि सबस्ट्रिंग के पहले आने का इंडेक्स लौटाता है। यदि सबस्ट्रिंग नहीं मिलती है, तो यह -1 लौटाता है।
सिंटैक्स
\nstring.indexOf(searchValue, fromIndex)\n\nउदाहरण
\nconst sentence = "मुझे JavaScript और Python पसंद है।";\n\nconsole.log(sentence.indexOf("पसंद")); // 2\nconsole.log(sentence.indexOf("Ruby")); // -1\n\n// उपस्थिति की जाँच\nif (sentence.indexOf("JavaScript") !== -1) {\n console.log("हाँ, स्ट्रिंग में JavaScript है!");\n}\n\n\nनाजुक बिंदु: क्यों !== -1?
\nकई शुरुआती if (str.indexOf("word")) लिखते हैं — और यह एक गलती है। यदि सबस्ट्रिंग बिल्कुल शुरुआत में है (इंडेक्स 0), तो if (0) की स्थिति false मानी जाती है। हमेशा -1 से तुलना करें।
indexOf() का उपयोग includes() के बजाय कब करें
\n- \n
- जब सबस्ट्रिंग की शुरुआत के इंडेक्स की आवश्यकता हो (उदाहरण के लिए, स्ट्रिंग का एक हिस्सा काटने के लिए)। \n
- पुराने कोड के साथ काम करना (IE और ब्राउज़र के पुराने संस्करण)। \n
- जब सभी उपस्थितियों को खोजने की आवश्यकता हो (लूप में
fromIndexबदलकर)। \n
विधि #3: search() और RegExp — जब लचीलेपन की आवश्यकता हो
\nक्या होगा यदि आपको सिर्फ एक शब्द नहीं, बल्कि एक पैटर्न खोजना है? उदाहरण के लिए, "JS" से शुरू होने वाले सभी शब्द" या "+7-xxx-xxx-xx-xx" प्रारूप में फोन नंबर। यहाँ रेगुलर एक्सप्रेशन और search() विधि मदद करते हैं।
सिंटैक्स
\nstring.search(regexp)\n
ब्लॉग
पुस्तक अनुशंसाएँ
यह भी पढ़ें