如何检查字符串是否全部为小写?

时间:2019-05-18 00:48:46

标签: swift

我有下面的代码。如果用户输入全部为小写,我希望将字符串大写。 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!
}

2 个答案:

答案 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 })