用于测试 NSString 在 Swift 中是否为数字的扩展



可以使用以下命令在 swift 中测试字符串是否为数字:

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

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

您需要检查长度是否大于 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

可以在扩展中创建函数

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

根据苹果的文档:

字符串是形成集合的一系列字符,例如"Swift"。Swift 中的字符串是 Unicode 正确的,并且不区分语言环境,并且设计为高效。字符串类型与Objective-C类NSString桥接,并提供与处理字符串的C函数的互操作性。

因此,您只需键入 cast 并使用相同的方法。

最新更新