check string是int或double,扩展名为swift 3

时间:2017-05-29 12:52:23

标签: swift string

我有下面的字符串扩展名,但只有 Int 才返回true,我想将其返回true,对于All, Int Double < / strong>仅限值。

extension String  {
    var isnumberordouble : Bool {
        get{
            return self.rangeOfCharacter(from: CharacterSet.decimalDigits.inverted) == nil
        }
    }
}

我该如何解决?任何的想法 ? TY。

1 个答案:

答案 0 :(得分:6)

正如@MartinR所说,检查字符串是否可以转换为IntDouble

extension String  {
    var isnumberordouble: Bool { return Int(self) != nil || Double(self) != nil }
}

print("1".isnumberordouble)      // true
print("1.2.3".isnumberordouble)  // false
print("1.2".isnumberordouble)    // true

@MartinR在评论中提出了一个很好的观点。转换为Int的任何值也会转换为Double,因此只需检查转换为Double即可:

extension String  {
    var isnumberordouble: Bool { return Double(self) != nil }
}

处理前导和尾随空格

上述解决方案有效,但如果您的String具有前导空格或尾随空格,则无法原谅。要处理它,请使用trimmingCharacters(in:) String方法删除空格(需要基础):

import Foundation

extension String  {
    var isnumberordouble: Bool { return Double(self.trimmingCharacters(in: .whitespaces)) != nil }
}

print("  12 ".isnumberordouble)     // true