एक संभावित स्विफ्ट समाधान:
var letterCounter = 0
var digitCount = 0
let phrase = "The final score was 32-31!"
for tempChar in phrase.unicodeScalars {
if tempChar.isAlpha() {
letterCounter++
} else if tempChar.isDigit() {
digitCount++
}
}
अद्यतन: ऊपर समाधान केवल ASCII वर्ण सेट में पात्रों के साथ काम करता है, यानी यह ए, ई या पत्र के रूप में ø नहीं पहचानता है।
let letters = NSCharacterSet.letterCharacterSet()
let digits = NSCharacterSet.decimalDigitCharacterSet()
var letterCount = 0
var digitCount = 0
for uni in phrase.unicodeScalars {
if letters.longCharacterIsMember(uni.value) {
letterCount++
} else if digits.longCharacterIsMember(uni.value) {
digitCount++
}
}
अद्यतन 2: निम्नलिखित विकल्प समाधान फाउंडेशन ढांचे, जो वर्ण उनके यूनिकोड वर्ण वर्गों के आधार पर परीक्षण कर सकते हैं से NSCharacterSet
का उपयोग करता Xcode 6 बीटा 4 के रूप में, पहले समाधान करता है अब काम नहीं करें, क्योंकि isAlpha()
और स्विफ्ट से संबंधित (ASCII- केवल) विधियों को हटा दिया गया है। दूसरा समाधान अभी भी काम करता है। स्विफ्ट 3 के लिए
अद्यतन:
let letters = CharacterSet.letters
let digits = CharacterSet.decimalDigits
var letterCount = 0
var digitCount = 0
for uni in phrase.unicodeScalars {
if letters.contains(uni) {
letterCount += 1
} else if digits.contains(uni) {
digitCount += 1
}
}
स्रोत
2014-07-01 05:04:25
हां, कि एकदम सही है - कैसे नरक आप "isAlpha" और के बारे में पता चला " isDigit "????? :-) मैं उन लोगों को भी नहीं जानता था। (गंभीरता से - क्या आपने उन्हें देखा है या आप पहले से ही उनसे पहले यात्रा में भाग चुके हैं?) – sirab333
@ sirab333: 'isalpha() 'और दोस्तों सी में अच्छी तरह से जाना जाता है, उदाहरण के लिए देखें। https://developer.apple.com/library/ios/documentation/System/Conceptual/ManPages_iPhoneOS/man3/ctype.3.html#//apple_ref/doc/man/3/ctype। तो मुझे स्विफ्ट से उनका उपयोग करने का तरीका जानने के लिए "केवल" था। - लेकिन ध्यान दें कि यह केवल ASCII वर्णों के लिए काम करता है। यह "विदेशी भाषाओं" जैसे अक्षरों को "ä", "è" या "ø" से नहीं पहचानता है। –
और यह '+' और '-' को अंक –