Swift Array को String में कैसे बदलें? उदाहरणों के साथ पूरा ट्यूटोरियल
\n\nनमस्ते, भविष्य के iOS डेवलपर! यदि आपने कभी सोचा है "How do I convert a Swift Array to a String?" — तो आप अकेले नहीं हैं। इस प्रश्न को Stack Overflow पर हज़ारों बार देखा गया है, और आज हम इसे हमेशा के लिए समझ लेंगे। इसकी आवश्यकता क्यों है? कल्पना करें: आप फ़ॉर्म से डेटा एकत्र कर रहे हैं, त्रुटियों को लॉग कर रहे हैं, या सर्वर पर भेजने के लिए टेक्स्ट तैयार कर रहे हैं। इन सभी मामलों में, ऐरे को एक पठनीय स्ट्रिंग में बदलना होता है। चलिए शुरू करते हैं!
\n\nसबसे आसान तरीका: joined() मेथड
\n\nSwift में, स्ट्रिंग्स के ऐरे को एक स्ट्रिंग में जोड़ने के लिए joined() मेथड का उपयोग किया जाता है। यह ऐरे से स्ट्रिंग तक का सबसे छोटा रास्ता है। बुनियादी उदाहरण देखें:
let fruits = ["सेब", "केला", "संतरा"]\nlet fruitsString = fruits.joined()\nprint(fruitsString) // आउटपुट: "सेबकेलासंतरा"\n\nहालाँकि, परिणाम एक साथ चिपका हुआ दिखता है। स्ट्रिंग को पठनीय बनाने के लिए, joined(separator:) का उपयोग करें — यह तत्वों के बीच एक विभाजक जोड़ता है:
let fruits = ["सेब", "केला", "संतरा"]\nlet fruitsString = fruits.joined(separator: ", ")\nprint(fruitsString) // आउटपुट: "सेब, केला, संतरा"\n\nमहत्वपूर्ण: joined() केवल उन ऐरे के साथ काम करता है जिनमें स्ट्रिंग्स ([String]) हों। यदि आपके पास संख्याओं या अन्य प्रकारों का ऐरे है, तो पहले प्रत्येक तत्व को बदलना होगा।
सार्वभौमिक तरीका: map() + joined()
\n\nक्या करें यदि आपके पास पूर्णांकों ([Int]), दशमलव संख्याओं ([Double]), या कस्टम स्ट्रक्चर का ऐरे है? map() मदद करता है। यह मेथड प्रत्येक तत्व को दिए गए नियम के अनुसार बदलता है, और फिर हम परिणाम को जोड़ते हैं:
let numbers = [1, 2, 3, 4, 5]\nlet numbersString = numbers.map { String($0) }.joined(separator: ", ")\nprint(numbersString) // आउटपुट: "1, 2, 3, 4, 5"\n\nयहाँ, map { String($0) } प्रत्येक संख्या को स्ट्रिंग में बदलता है। उसके बाद, स्ट्रिंग्स का ऐरे joined() के माध्यम से आसानी से जुड़ जाता है।
जटिल ऑब्जेक्ट्स के साथ उदाहरण
\n\nमान लीजिए, आपके पास उपयोगकर्ताओं का एक ऐरे है, और आपको उनके नामों की एक स्ट्रिंग प्राप्त करनी है:
\n\nstruct User {\n let name: String\n let age: Int\n}\n\nlet users: [User] = [\n User(name: "अन्ना", age: 25),\n User(name: "बोरिस", age: 30),\n User(name: "विक्टोरिया", age: 28)\n]\n\nlet namesString = users.map { $0.name }.joined(separator: ", ")\nprint(namesString) // आउटपुट: "अन्ना, बोरिस, विक्टोरिया"\n\nउन्नत तरीका: reduce(into:)
\n\nreduce(into:) मेथड एक अधिक लचीला उपकरण है। यह प्रक्रिया पर पूर्ण नियंत्रण के साथ स्ट्रिंग बनाने की अनुमति देता है। उदाहरण के लिए, आप प्रीफ़िक्स, सफ़िक्स जोड़ सकते हैं या तत्वों को क्रमांकित कर सकते हैं:
let colors = ["लाल", "हरा", "नीला"]\nlet result = colors.reduce(into: "मेरे रंग: ") { (partialResult, color) in\n partialResult += color + ", "\n}\n// यदि आवश्यक हो तो अंतिम ", " हटाएँ\nlet finalString = String(result.dropLast(2))\nprint(finalString) // आउटपुट: "मेरे रंग: लाल, हरा, नीला"\n\nध्यान दें: हम मैन्युअल रूप से अंतिम दो वर्ण (अल्पविराम और स्थान) हटाते हैं। यह कोड को joined() की तुलना में कम सुरुचिपूर्ण बनाता है, लेकिन जब जटिल निर्माण तर्क की आवश्यकता होती है तो reduce अपरिहार्य है।
ऑप्शनल वैल्यू (Optionals) को संभालना
\n\nवास्तविक प्रोजेक्ट्स में, ऐरे में अक्सर nil होता है। यदि आप सीधे joined() कॉल करते हैं, तो कंपाइलर एक त्रुटि देगा। समाधान — compactMap() के साथ nil को फ़िल्टर करें:
let optionalStrings: [String?] = ["नमस्ते", nil, "दुनिया", nil, "Swift"]\nlet safeString = optionalStrings.compactMap { $0 }.joined(separator: " ")\nprint(safeString) // आउटपुट: "नमस्ते दुनिया Swift"\n\ncompactMap { $0 } स्वचालित रूप से सभी nil को हटा देता है और वापस