我有下面的代码。如果用户输入全部为小写,我希望将字符串大写。 swift提供此功能吗?我知道在Python中是“ .islower()”。我尝试使用Google搜索,然后尝试输入.is
,然后看到出现了什么情况,但是没有运气。
let holder = PasswordCoreData(entity: PasswordCoreData.entity(), insertInto: context)
if let title = createHolderItem.text {
holder.item = title
//here is where I need help
if holder.item.[islowercased] {
holder.item = holder.item.capitalized
}
holder.username = createHolderUsername.text!
holder.password = createHolderPassword.text!
}
答案 0 :(得分:4)
检查title
是否等于title
的小写版本。
if title == title.lowercased() {
// It's an all lowercase string
}
您可以进行一些有用的扩展:
extension StringProtocol {
var isLowercase: Bool {
return self == self.lowercased()
}
}
现在将其用作:
if title.isLowercase {
}
答案 1 :(得分:0)
对于英语字母(从小写的 a 到小写的 z ),您可以通过检查所有Unicode标量来验证title
是小写< / p>
let scalars = title.compactMap { $0.unicodeScalars.first?.value }
执行satisfy这种情况:
let isLowerCase = scalars.allSatisfy({ $0 > 96 }) //true
A 到 Z 的Unicode标量从65到90。您可以通过以下方式进行检查:
"A".unicodeScalars.first?.value` //65
"Z".unicodeScalars.first?.value` //90
对于小写字母,它们从97到122:
"a".unicodeScalars.first?.value //97
"z".unicodeScalars.first?.value //122
有关Unicode标量的更多信息,请查看here。
一种更简洁的解决方案(由 @rmaddy 建议)涵盖重音字母和其他字母的字母,请检查所有字符的isLowercase
属性:
let isLowerCase = title.allSatisfy({ $0.isLowercase })