比较 – Swift:如何找出字母是字母数字还是数字

比较 – Swift:如何找出字母是字母数字还是数字,第1张

概述我想在以下字符串中计算字母数字和特殊字符的数量: 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 = 0var digitCount = 0let 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 = 0var digitCount = 0for 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.letterslet digits = CharacterSet.decimalDigitsvar letterCount = 0var digitCount = 0for uni in phrase.unicodeScalars {    if letters.contains(uni) {        letterCount += 1    } else if digits.contains(uni) {        digitCount += 1    }}
总结

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

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1054666.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存