Swift   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了比较 – Swift:如何找出字母是字母数字还是数字大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我想在以下字符串中计算字母,数字和特殊字符的数量: let phrase = "The final score was 32-31!" 我试过了: for tempChar in phrase { if (tempChar >= "a" && tempChar <= "z") { letterCounter++ } // etc. 但我收到错误。我尝试了各种其他变体
我想在以下字符串中计算字母,数字和特殊字符的数量
let phrase = "The final score was 32-31!"

我试过了

for tempChar in phrase {
    if (tempChar >= "a" && tempChar <= "z") {
       letterCounter++
    }
// etc.

但我收到错误。我尝试了各种其他变体 – 仍然会收到错误 – 例如:

Could not find an overload for '<=' that accepts the supplied arguments

任何线索?

可能的Swift解决方案:
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字符集中的字符,
即不识别Ä,é或ø为字母。以下替代方案
解决方案从Foundation框架中使用NSCharacterSet,它可以测试字符
基于他们的Unicode字符类:

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:从Xcode 6 beta 4开始,第一个解决方案不再工作,因为
从Swift中删除了isAlpha()和相关(仅限ASCII)的方法
第二个解决方案仍然可行。

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
    }
}

大佬总结

以上是大佬教程为你收集整理的比较 – Swift:如何找出字母是字母数字还是数字全部内容,希望文章能够帮你解决比较 – Swift:如何找出字母是字母数字还是数字所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。