Swift: स्ट्रिंग में वर्ण बदलना — शुरुआती लोगों के लिए पूर्ण विश्लेषण

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Swift: स्ट्रिंग में वर्ण कैसे बदलें? शुरुआती लोगों के लिए पूर्ण विश्लेषण

\n\n

देर-सबेर, Swift पर हर डेवलपर को एक कार्य का सामना करना पड़ता है: स्ट्रिंग में कुछ वर्णों को दूसरे वर्णों से बदलना। यह आसान लगता है, है ना? लेकिन शुरुआती अक्सर भ्रमित हो जाते हैं, क्योंकि Swift String C की तरह वर्णों की एक सरणी नहीं है, बल्कि एक जटिल Unicode-संगत संरचना है। इस लेख में, हम Swift में वर्ण बदलने के सबसे लोकप्रिय और प्रभावी तरीकों पर चर्चा करेंगे, सरल से लेकर उन्नत तक।

\n\n

हम केवल विधियों को सूखी सूचीबद्ध नहीं करेंगे। इसके बजाय, हम वास्तविक उदाहरणों का विश्लेषण करेंगे जिनका आप सामना करेंगे: रिक्त स्थान बदलने से लेकर विराम चिह्न हटाने और इमोजी के साथ काम करने तक। चलिए शुरू करते हैं!

\n\n

Swift String केवल वर्णों की एक सरणी क्यों नहीं है?

\n

वर्ण बदलने से पहले, यह समझना महत्वपूर्ण है कि Swift में स्ट्रिंग कैसे काम करती है। String Character का एक संग्रह है, लेकिन प्रत्येक Character में कई Unicode स्केलर हो सकते हैं (उदाहरण के लिए, इमोजी 🚀 या विशेषक चिह्न वाला अक्षर «ё»)। इसलिए, यहाँ Int द्वारा इंडेक्सिंग सीधे काम नहीं करती है। इसके बजाय, Swift String.Index का उपयोग करता है।

\n\n

लेकिन वर्ण बदलने के लिए, आपको इंडेक्स की गहराई में जाने की आवश्यकता नहीं है — तैयार उच्च-स्तरीय विधियाँ हैं। आइए सबसे लोकप्रिय पर नज़र डालें।

\n\n

विधि #1: replacingOccurrences — बदलाव का राजा

\n

सबसे सरल और स्पष्ट तरीका replacingOccurrences(of:with:) विधि का उपयोग करना है। यह बदले गए अवतरणों के साथ एक नई स्ट्रिंग लौटाता है। मूल स्ट्रिंग अपरिवर्तित रहती है (Swift डिफ़ॉल्ट रूप से अपरिवर्तनीय स्ट्रिंग वाली भाषा है)।

\n\n
let original = "Hello, World!"\nlet replaced = original.replacingOccurrences(of: "World", with: "Swift")\nprint(replaced) // "Hello, Swift!"\nprint(original) // "Hello, World!" — मूल नहीं बदला
\n\n

यह विधि सरल मामलों के लिए आदर्श है: एक शब्द, वर्ण या उपस्ट्रिंग को बदलना। लेकिन क्या होगा यदि आपको कई अलग-अलग वर्ण बदलने की आवश्यकता है? उदाहरण के लिए, सभी रिक्त स्थान और बिंदु हटाना?

\n\n

एकाधिक बदलावों के लिए कॉल की श्रृंखला

\n

आप replacingOccurrences को कई बार क्रमिक रूप से कॉल कर सकते हैं:

\n\n
let text = "Hello, World! How are you?"\nlet cleaned = text\n    .replacingOccurrences(of: ",", with: "")\n    .replacingOccurrences(of: "!", with: "")\n    .replacingOccurrences(of: " ", with: "_")\nprint(cleaned) // "Hello_World_How_are_you?"
\n\n

नुकसान: यदि कई बदलाव हैं, तो कोड बोझिल हो जाता है। ऐसे मामलों के लिए, अन्य विधियाँ या रेगुलर एक्सप्रेशन बेहतर हैं।

\n\n

विधि #2: map और filter के साथ बदलाव (कार्यात्मक दृष्टिकोण)

\n

Swift केवल OOP नहीं है, बल्कि कार्यात्मक प्रोग्रामिंग भी है। आप map का उपयोग करके स्ट्रिंग के प्रत्येक वर्ण पर जा सकते हैं और शर्त के अनुसार उन्हें बदल सकते हैं। यह विशेष रूप से तब उपयोगी होता है जब आपको वर्णों के एक निश्चित सेट की सभी घटनाओं को बदलने की आवश्यकता होती है।

\n\n
let input = "a1b2c3d4"\nlet result = input.map { char -> Character in\n    if char.isNumber {\n        return "X"\n    } else {\n        return char\n    }\n}\nprint(String(result)) // "aXbXcXdX"
\n\n

यहाँ हमने सभी अंकों को "X" से बदल दिया। और यदि आपको वर्ण हटाने की आवश्यकता है? filter का उपयोग करें:

\n\n
let withPunctuation = "Hello!!! How are you??"\nlet noPunctuation = withPunctuation.filter { !$0.isPunctuation }\nprint(noPunctuation) // "Hello How are you"
\n\n

यह दृष्टिकोण बहुत लचीला है: आप किसी भी जाँच का उपयोग कर सकते हैं — isNumber, isLetter, isWhitespace या वर्णों के सेट से तुलना भी।

\n\n

विधि #3: रेगुलर एक्सप्रेशन (NSRegularExpression)

\n

जब कार्य जटिल हो जाता है (पैटर्न द्वारा बदलाव, सभी ईमेल हटाना, तिथियाँ बदलना), तो रेगुलर एक्सप्रेशन अपरिहार्य हैं। Swift Foundation से NSRegularExpression का समर्थन करता है।

\n\n
import Foundation\n\nlet text = "My email is test@example.com and your is user@test.org"\nlet regex = try! NSRegularExpression

ब्लॉग

पुस्तक अनुशंसाएँ