当前位置: 首页 > 面试题库 >

如何在Swift中找出字母是字母数字还是数字

曾奇略
2023-03-14
问题内容

我想计算以下字符串中的字母,数字和特殊字符的数量:

let phrase = "The final score was 32-31!"

我试过了:

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

但我遇到了错误。我对此尝试了各种其他变化-仍然出现错误-如:

找不到’<=’的重载,该重载接受提供的参数


问题答案:

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解决方案:

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字符集中的字符,即不能将Ä,é或ø识别为字母。NSCharacterSetFoundation框架使用以下替代解决方案,该框架可以根据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开始,第一个解决方案不再起作用,因为isAlpha()和的相关方法(仅ASCII)已从Swift中删除。第二个解决方案仍然有效。



 类似资料:
  • 我正在运行测试的类: 测试课程: 当我用一个通过的数字运行测试时,它工作正常,但是当我把它换成不同的东西时,例如69,我得到的是数值,而不是字母: 实际值不应该是D,而应该是F吗?我做错了什么?我正在看这个教程,在15:38,他把它们作为字母而不是数字。

  • 问题内容: 改善这个问题 我是android编码练习的新手 假设这是我的第一个ID,我希望使用共享的首选项将此值自动递增1并用作员工ID。如ABB20180002,ABB20180003,ABB20180004等。 问题答案: 您不能直接增加字母数字值。如果要这样做,您需要为其编写一些代码行 这是 activity_main.xml 这是 MainActivity.java 希望这会帮助你。

  • 问题内容: 如何在Swift中生成随机的字母数字字符串? 问题答案: Swift 4.2更新 Swift 4.2在处理随机值和元素方面引入了重大改进。您可以在此处阅读有关这些改进的更多信息。这是减少到几行的方法: Swift 3.0更新 原始答案:

  • 问题内容: 什么是最好的纯Python实现,以检查字符串是否包含字母表中的任何字母? 哪里会因为没有字母而返回,而会因为有了字母而返回。 问题答案: 正则表达式应该是一种快速的方法:

  • 问题内容: 我一直在谷歌搜索很多,但没有找到我的问题的答案: 如何使用正则表达式检查字符串是否至少包含以下各项之一: 大写字母 小写字母 数字 特殊字符: !@#$%^&*()-_=+|[{]};:’“,<.>/?` 所以,我至少需要一个大写字母 和 至少一个小写字母 和 至少一个数字 和 至少一个特殊字符。 我敢肯定答案很简单,但是我找不到。任何帮助是极大的赞赏。 问题答案: 尽管我个人会使用M

  • 问题内容: 我需要从字符串中删除所有不在集合中或不是空格的字符。 有人有功能吗? 问题答案: 听起来您几乎已经知道自己想做的事情,基本上将其定义为正则表达式。