我想计算以下字符串中字母、数字和特殊字符的数量:
let phrase = "The final score was 32-31!"
我试过:
for tempChar in phrase {
if (tempChar >= "a" && tempChar <= "z") {
letterCounter++
}
// etc.
但我有错误.我在这方面try 了各种各样的变化——仍然会出错——比如:
找不到"<;="的重载它接受提供的参数
我想计算以下字符串中字母、数字和特殊字符的数量:
let phrase = "The final score was 32-31!"
我试过:
for tempChar in phrase {
if (tempChar >= "a" && tempChar <= "z") {
letterCounter++
}
// etc.
但我有错误.我在这方面try 了各种各样的变化——仍然会出错——比如:
找不到"<;="的重载它接受提供的参数
Swift 5见rustylepord's answer.
Update for Swift 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
}
}
(Previous answer for older Swift versions)
一个可能的快速解决方案:
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++
}
}
Update:上述解决方案仅适用于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++
}
}
Update 2:从Xcode 6 beta 4开始,第一个解决方案不再有效,因为