【问题标题】:Swift NSString check for NumbersSwift NSString 检查数字
【发布时间】:2015-10-31 18:10:27
【问题描述】:

我有一个 Array:NSString 看起来像

[X1],[Tester],[123],[456],[0]

现在我必须检查位置(始终相同)是数字还是字符串
所以我尝试了

 var test = Array[0].intValue
        print(test) 

但由于 [0] 是一个字符串,它不应该返回 0,因为它也可能是 [4]

0

有没有办法检查 NSString 是否只是一个数字(返回真/假就足够了)?

完整代码示例

var Array: [NSString] = ["X1","Fabian","100","200","not avaible"]
/* could also be Array:
var Array0: [NSString] = ["X2","Timo","200","300","300"]
*/
//need to check if Array[4] is a number or not so its "text" or "number"

var test = Array[4].intValue
print(test)

//return 0

【问题讨论】:

  • 请显示您的确切代码,输入是什么(不是解释性术语,而是代码术语)- 当前正在发生什么以及您想要实现什么?
  • 已更新完整代码
  • 因为这个解决方案不能工作,因为 NSString 没有成员 toInt

标签: ios swift nsstring numbers


【解决方案1】:

在 swift2 中: 您可以使用Int(<your variable>) 如果可以转换,则返回数字,否则返回 nil,您可以检查返回的值。

使用可选条件的示例:

let s = "Some String"
if let _ = Int(s) {
    print("it is a number")
}else{
    print("it is not a number")
}

这个例子应该返回“它不是一个数字”

【讨论】:

    【解决方案2】:

    如果要收集数组元素为数字的索引,可以使用映射返回可以转换为数字的索引。

    var Array0: [NSString] = ["X1","Fabian","100","200","not avaible"]
    var numbersAt: [Int] = Array0.enumerate().map{ (index, number) in
        return (Int(number as String) == nil ? -1 : index)  
    }
    print("indexes: \(numbersAt)") //numbersAt will have the indexes unless they're not numbers in which case it'll have -1
    
    //Another option will be to filter the array and collect only the number strings 
    var numbers = Array0.filter { Int($0 as String) != nil }
    print("numbers: \(numbers)")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多