【问题标题】:How to check if a String is an Int in Swift?如何在 Swift 中检查字符串是否为 Int?
【发布时间】:2016-07-02 11:00:46
【问题描述】:

我有一个 TextField,我想验证输入的文本是否为整数。我怎么能这样做?

我想写一个这样的函数:

func isStringAnInt(string: String) -> Bool {

}

【问题讨论】:

    标签: swift swift2


    【解决方案1】:

    字符串扩展和计算属性

    您还可以向String 添加计算属性。

    计算属性内部的逻辑与OOPer

    描述的相同
    extension String {
        var isInt: Bool {
            return Int(self) != nil
        }
    }
    

    现在你可以

    "1".isInt // true
    "Hello world".isInt // false
    "".isInt // false
    

    【讨论】:

    • 这比接受的答案更快,因此应该被接受。
    • 是的。最干净的答案
    【解决方案2】:

    使用此功能

    func isStringAnInt(string: String) -> Bool {
        return Int(string) != nil
    }
    

    【讨论】:

      【解决方案3】:

      你可以这样检查

      func isStringAnInt(stringNumber: String) -> Bool {
      
          if let _ = Int(stringNumber) {
              return true
          }
          return false
      }
      

      您可以为字符串创建一个扩展。转到文件 -> 新文件 -> Swift 文件

      在你新创建的 Swift 文件中你可以写

      extension String
      {
          func isStringAnInt() -> Bool {
      
              if let _ = Int(self) {
                  return true
              }
              return false
          }
      }
      

      这样你就可以在你的整个项目中像这样访问这个功能了

      var str = "123"
      if str.isStringAnInt() // will return true
      {
       // Do something
      }
      

      【讨论】:

      • @EricD 如果有问题,请编辑我的答案,以便我也可以学习。
      • 做了一点编辑。您可能希望将isStringAnInt() 设为计算属性extension String { var isInt: Bool { if let _ = Int(self) { return true } return false } },然后您可以执行"123".isInt
      【解决方案4】:

      您还可以使用以下扩展方法,该方法使用与所有提到的答案不同的逻辑

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

      【讨论】:

        【解决方案5】:
        if s is String {
          print("Yes, it's a String")
        } else if s is Int {
          print("It is Integer")
        } else {
          //some other check
        }
        

        【讨论】:

        • 这段代码返回正确的结果,但是问题要求一个函数,而这段代码不是函数。
        猜你喜欢
        • 1970-01-01
        • 2014-04-30
        • 2011-02-20
        • 1970-01-01
        • 2016-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-25
        相关资源
        最近更新 更多