如果NSString在Swift中是Numeric,则扩展为测试

问题描述 投票:0回答:3

可以使用以下命令测试String中的String是否为数字:

extension String  {
    var isNumber: Bool {
        return !isEmpty && rangeOfCharacter(from: CharacterSet.decimalDigits.inverted) == nil
    }
}

有没有类似的方法来检查NSString是否是数字?我已经玩过上面但是无法编译任何东西。

ios swift integer nsstring
3个回答
2
投票

您需要检查长度是否大于0以及范围位置是否等于NSNotFound:

extension NSString  {
    var isNumber: Bool {
        return length > 0 && rangeOfCharacter(from: CharacterSet.decimalDigits.inverted).location == NSNotFound
    }
}

("1" as NSString).isNumber  // true

("a" as NSString).isNumber // false

0
投票

根据Apple的文档:

字符串是一系列字符,例如“Swift”,它们形成一个集合。 Swift中的字符串是Unicode正确且区域设置不敏感,并且设计为高效。 String类型与Objective-C类NSString桥接,并提供与字符串一起使用的C函数的互操作性。

所以你可以输入强制转换并使用相同的方法。


0
投票

您可以在扩展中创建功能

extension NSString  {
func isNumber() -> Bool {
    let str: String = self as String
    return Int(str) != nil || Double(str) != nil
    }
}
let x: NSString = "32"
x.isNumber() // true
© www.soinside.com 2019 - 2024. All rights reserved.