测试 NSString 在 Swift 中是否为数字的扩展
Extension to Test if NSString is Numeric in Swift
可以使用以下方法测试 swift 中的字符串是否为数字:
extension String {
var isNumber: Bool {
return !isEmpty && rangeOfCharacter(from: CharacterSet.decimalDigits.inverted) == nil
}
}
是否有类似的方法来检查 NSString
是否为数字?我玩过上面的东西,但无法编译任何东西。
您可以在扩展中创建函数
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
您需要检查长度是否大于 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
根据 Apple 的文档:
字符串是一系列字符,例如"Swift",它们构成了一个集合。 Swift 中的字符串是 Unicode 正确且不区分区域设置,并且旨在提高效率。 String 类型与 Objective-C class NSString 桥接,并提供与处理字符串的 C 函数的互操作性。
因此您只需键入 cast 并使用相同的方法即可。
可以使用以下方法测试 swift 中的字符串是否为数字:
extension String {
var isNumber: Bool {
return !isEmpty && rangeOfCharacter(from: CharacterSet.decimalDigits.inverted) == nil
}
}
是否有类似的方法来检查 NSString
是否为数字?我玩过上面的东西,但无法编译任何东西。
您可以在扩展中创建函数
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
您需要检查长度是否大于 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
根据 Apple 的文档:
字符串是一系列字符,例如"Swift",它们构成了一个集合。 Swift 中的字符串是 Unicode 正确且不区分区域设置,并且旨在提高效率。 String 类型与 Objective-C class NSString 桥接,并提供与处理字符串的 C 函数的互操作性。
因此您只需键入 cast 并使用相同的方法即可。