Swift में स्ट्रिंग में सबस्ट्रिंग कैसे चेक करें? पूरी गाइड
\n\nनमस्ते, डेवलपर साथी! अगर आपने कभी Swift में कोड लिखा है और सोचा है, "एक स्ट्रिंग के अंदर दूसरा शब्द कैसे ढूंढूं?", तो आप सही जगह पर हैं। यह टॉपिक Stack Overflow पर सबसे लोकप्रिय सवालों में से एक है (अंग्रेज़ी वर्शन को लाखों व्यूज़ मिले हैं)। और यह कोई संयोग नहीं है: स्ट्रिंग के साथ काम करना एक बुनियादी स्किल है, जिसके बिना कोई भी ऐप पूरा नहीं होता।
\n\nइस आर्टिकल में हम स्ट्रिंग में सबस्ट्रिंग चेक करने के सभी तरीकों को समझेंगे। सबसे आसान contains() से लेकर case-insensitive सर्च और रेगुलर एक्सप्रेशन जैसी एडवांस तकनीकों तक। चलिए शुरू करते हैं!
1. सबसे आसान तरीका: contains() मेथड
\n\nSwift 1.0 से ही, String टाइप में बिल्ट-इन contains() मेथड उपलब्ध है। यह बहुत आसान और तेज़ काम करता है।
let fullString = "नमस्ते, Swift की दुनिया!"\nlet searchString = "Swift"\n\nif fullString.contains(searchString) {\n print("हाँ, स्ट्रिंग में '\\(searchString)' मौजूद है")\n} else {\n print("नहीं, मौजूद नहीं है")\n}\n// आउटपुट: हाँ, स्ट्रिंग में 'Swift' मौजूद है\n\nध्यान दें: contains() मेथड केस-सेंसिटिव है। यानी "swift" को "Swift" स्ट्रिंग में नहीं ढूंढा जाएगा। लेकिन हम इसे आगे ठीक करेंगे।
2. केस-इनसेंसिटिव सर्च: localizedCaseInsensitiveContains()
\n\nअक्सर हमें बड़े-छोटे अक्षरों की परवाह किए बिना शब्द ढूंढना होता है। इसके लिए एक स्पेशल मेथड है जो यूज़र की लोकेल के हिसाब से काम करता है।
\n\nlet text = "Swift में आपका स्वागत है"\nlet search = "swift"\n\nif text.localizedCaseInsensitiveContains(search) {\n print("मिल गया! केस कोई मायने नहीं रखता।")\n} else {\n print("नहीं मिला")\n}\n// आउटपुट: मिल गया! केस कोई मायने नहीं रखता।\n\nयह मेथड डिवाइस की करंट लोकेल का उपयोग करता है, जो खास नियमों वाली भाषाओं (जैसे तुर्की, जहाँ 'i' और 'I' अलग अक्षर हैं) के लिए बहुत ज़रूरी है।
\n\n3. लोकेल के साथ सर्च: localizedStandardContains()
\n\nएक और उपयोगी मेथड है localizedStandardContains()। यह उसी तरह सर्च करता है जैसे iOS का स्टैंडर्ड सर्च (जैसे Spotlight या Finder) करता है।
let fileName = "छुट्टियों_की_फोटो_2024.jpg"\nlet query = "छुट्टियों"\n\nif fileName.localizedStandardContains(query) {\n print("फ़ाइल मिल गई!")\n}\n// आउटपुट: फ़ाइल मिल गई!\n\nयह मेथड ऑटोमैटिकली स्ट्रिंग को नॉर्मलाइज़ करता है, डायक्रिटिकल मार्क्स हटाता है (जैसे 'é' = 'e') और केस-इनसेंसिटिव काम करता है। यूज़र इंटरफ़ेस में सर्च के लिए यह परफेक्ट है।
\n\n4. क्लासिक तरीका: range(of:)
\n\nकभी-कभी सिर्फ यह जानना काफी नहीं होता कि सबस्ट्रिंग मौजूद है या नहीं, बल्कि उसकी पोज़ीशन भी चाहिए होती है। यहाँ range(of:) काम आता है। यह एक ऑप्शनल रेंज (Range<String.Index>?) रिटर्न करता है।
let phrase = "pythonlib.ru पर Swift सीखें"\nlet word = "Swift"\n\nif let range = phrase.range(of: word) {\n print("सबस्ट्रिंग पोज़ीशन पर मिली: \\(range.lowerBound)")\n // स्ट्रिंग का एक हिस्सा निकाल भी सकते हैं\n let extracted = phrase[range]\n print("निकाला गया: \\(extracted)")\n} else {\n print("सबस्ट्रिंग नहीं मिली")\n}\n\nrange के साथ केस-इनसेंसिटिव सर्च के लिए .caseInsensitive ऑप्शन का उपयोग करें:
if let range = phrase.range(of: "swift", options: .caseInsensitive) {\n print("केस-इनसेंसिटिव मिला: \\(phrase[range])")\n}\n\n5. स्ट्रिंग की शुरुआत और अंत जांचना
\n\nकभी-कभी यह जांचना ज़रूरी होता है कि स्ट्रिंग किसी खास शब्द से शुरू होती है या खत्म होती है। इसके लिए स्पेशल मेथड हैं:
\n\nlet url = "https://pythonlib.ru"\n\nif url.hasPrefix("https://") {\n print("यह एक सुरक्षित URL है")\n}\n\nif url.hasSuffix(".ru") {\n print("रूसी डोमेन")\n}\n\nदोनों मेथड केस-सेंसिटिव हैं।