"मेरा .trim() कहाँ है?" — या Swift, Python क्यों नहीं है
\n\nअगर आप Python या JavaScript से Swift में आए हैं, तो आप शायद " hello ".trim() या " hello ".strip() जैसे आसान तरीकों के आदी हैं। और अब जब आप अपना पहला Swift कोड लिख रहे हैं और वही करने की कोशिश करते हैं, तो कंपाइलेशन एरर मिलती है। यह स्थिति जानी-पहचानी लगती है?
Stack Overflow पर इस सवाल को हज़ारों बार देखा गया है, और यह सही भी है। Swift में स्ट्रिंग के लिए कोई .trim() मेथड नहीं है। लेकिन इसका मतलब यह नहीं कि आप स्पेस और कैरेक्टर नहीं हटा सकते। बस तरीका अलग है — ज़्यादा Swift-way। आइए इसे हमेशा के लिए समझ लें।
इस लेख में हम न केवल मुख्य सवाल का जवाब देंगे, बल्कि असली कोड उदाहरण भी दिखाएंगे जिन्हें आप तुरंत अपने प्रोजेक्ट में इस्तेमाल कर सकते हैं। चलिए शुरू करते हैं!
\n\nसंक्षिप्त जवाब: हाँ, लेकिन आपकी आदत से अलग
\n\nSwift में एक ही .trim() मेथड नहीं है। इसके बजाय, Foundation प्रोटोकॉल से मेथड्स का एक परिवार इस्तेमाल होता है:
- \n
trimmingCharacters(in:)— मुख्य टूल \n .trimmingCharacters(in: .whitespacesAndNewlines)— सबसे लोकप्रिय विकल्प \n
यह थोड़ा लंबा लगता है? असल में यह लचीलापन देता है: आप खुद तय करते हैं कि कौन से कैरेक्टर हटाने हैं, न कि किसी बिल्ट-इन मेथड के "जादू" पर निर्भर रहना।
\n\ntrimmingCharacters कैसे काम करता है — उदाहरणों के साथ समझें
\n\nबेसिक उदाहरण: स्पेस और न्यूलाइन हटाना
\n\nimport Foundation\n\nlet text = " नमस्ते, Swift! \\n"\nlet trimmed = text.trimmingCharacters(in: .whitespacesAndNewlines)\nprint(trimmed) // "नमस्ते, Swift!"\n\nध्यान दें: हमें अनिवार्य रूप से Foundation इम्पोर्ट करना होगा। इसके बिना यह मेथड उपलब्ध नहीं है, क्योंकि यह NSString में परिभाषित है, जो Swift स्ट्रिंग से ब्रिज के ज़रिए जुड़ता है।
सिर्फ स्पेस (न्यूलाइन हटाए बिना)
\n\nlet textWithNewline = " Hello\\n"\nlet onlySpacesTrimmed = textWithNewline.trimmingCharacters(in: .whitespaces)\nprint(onlySpacesTrimmed) // "Hello\\n"\n\nदेखा? न्यूलाइन बच गया। यह तब उपयोगी है जब आप फ़ॉर्मेटिंग बनाए रखना चाहते हैं, लेकिन किनारों से अतिरिक्त स्पेस हटाना चाहते हैं।
\n\nमनमाने कैरेक्टर हटाना
\n\nCharacterSet में कोई भी सेट पास किया जा सकता है:
let email = " user@example.com "\nlet cleaned = email.trimmingCharacters(in: .whitespaces)\nprint(cleaned) // "user@example.com"\n\nlet price = "$99.99"\nlet noDollar = price.trimmingCharacters(in: CharacterSet(charactersIn: "$"))\nprint(noDollar) // "99.99"\n\ntrimLeft / trimRight (ltrim / rtrim) के बारे में क्या?
\n\nPython में .lstrip() और .rstrip() होते हैं। Swift में — नहीं। लेकिन इसे आसानी से मैन्युअल रूप से लागू किया जा सकता है। यहाँ दो सरल एक्सटेंशन हैं जिन्हें आप अपने प्रोजेक्ट में जोड़ सकते हैं:
import Foundation\n\nextension String {\n func trimmingLeft(in characterSet: CharacterSet = .whitespacesAndNewlines) -> String {\n var start = startIndex\n while start < endIndex, characterSet.contains(self[start].unicodeScalars.first!) {\n formIndex(after: &start)\n }\n return String(self[start..<endIndex])\n }\n \n func trimmingRight(in characterSet: CharacterSet = .whitespacesAndNewlines) -> String {\n var end = endIndex\n while end > startIndex, characterSet.contains(self[index(before: end)].unicodeScalars.first!) {\n formIndex(before: &end)\n }\n return String(self[startIndex..<end])\n }\n}\n\n// उपयोग का उदाहरण:\nlet text = " Hello World "\nprint(text.trimmingLeft()) // "Hello World "\nprint(text.trimmingRight()) // " Hello World"\n\nअब आपके पास पूरी तरह से काम करने वाले trimLeft और trimRight हैं, बिल्कुल पसंदीदा Python की तरह। इस कोड को एक अलग फ़ाइल में सेव करें — काम आएगा।