मैं उम्मीद कर रहा था कि stringFromCharactersInSet () की तरह कुछ होगा जो मुझे रखने के लिए केवल मान्य वर्ण निर्दिष्ट करने की अनुमति देगा।
आप या तो शुरू से या स्ट्रिंग के अंत से पात्रों को हटाने के लिए निर्धारित चरित्र के trimmingCharacters
साथ उपयोग कर सकते हैं inverted
। स्विफ्ट 3 और बाद में:
let result = string.trimmingCharacters(in: CharacterSet(charactersIn: "0123456789.").inverted)
या, यदि आप स्ट्रिंग में कहीं भी नॉन-न्यूमेरिक वर्णों को हटाना चाहते हैं (सिर्फ शुरुआत या अंत नहीं), तो आप कर सकते filter
हैं characters
, जैसे कि स्विफ्ट 4.2.1 में:
let result = string.filter("0123456789.".contains)
या, यदि आप स्ट्रिंग में कहीं से भी कैरेक्टरसेट से वर्ण हटाना चाहते हैं, तो उपयोग करें:
let result = String(string.unicodeScalars.filter(CharacterSet.whitespaces.inverted.contains))
या, यदि आप केवल एक निश्चित प्रारूप (जैसे ####.##
) के वैध तारों से मेल खाना चाहते हैं, तो आप नियमित अभिव्यक्ति का उपयोग कर सकते हैं। उदाहरण के लिए:
if let range = string.range(of: #"\d+(\.\d*)?"#, options: .regularExpression) {
let result = string[range]
}
इन विभिन्न दृष्टिकोणों का व्यवहार थोड़ा भिन्न होता है इसलिए यह ठीक उसी पर निर्भर करता है जो आप करने की कोशिश कर रहे हैं। यदि आप दशमलव संख्याएँ, या केवल पूर्णांक चाहते हैं, तो दशमलव बिंदु को शामिल या बहिष्कृत करें। इसे पूरा करने के कई तरीके हैं।
पुराने के लिए, स्विफ्ट 2 सिंटैक्स, इस उत्तर के पिछले संशोधन को देखें ।
inverted
स्विफ्ट 3 के उदाहरण में सेट चरित्र पर करने की आवश्यकता क्यों है ?