【问题标题】:Swift - pruning elements from an Array, converting integer strings to integersSwift - 从数组中修剪元素,将整数字符串转换为整数
【发布时间】:2015-12-28 20:00:54
【问题描述】:

我有一个包含数字和空字符串的数组,例如["", "2", "4", "", "", "1", "2", ""]。我想将其缩减为一个数字列表,例如 [2,4,1,2]

我的第一次尝试将其分为两个步骤,首先去除空字符串,然后进行字符串到整数的转换。但是,我的第一步代码没有按预期工作。

for (index,value) in tempArray.enumerate(){
    if value == ""  {
        tempArray.removeAtIndex(index)
    }
}

我相信这会失败,因为它使用的是原始完整数组中的索引值,尽管在第一次删除后它们不再准确。

实现我的目标的更好方法是什么,将生成的整数字符串数组转换为整数数组的最佳方法是什么?

【问题讨论】:

    标签: arrays swift types swift2


    【解决方案1】:
    var str = ["", "2", "4", "", "", "1", "2", ""]
    
    let filtered = str.filter {$0 != "" }
    
    let intArr = filtered.map {($0 as NSString).integerValue}
    

    【讨论】:

    • 这是一个非常好的答案;我给 Eric D 打勾只是因为他先发帖。
    【解决方案2】:

    借助 Swift 2,我们可以利用 flatMapInt()

    let stringsArray = ["", "2", "4", "", "", "1", "2", ""]
    
    let intsArray = stringsArray.flatMap { Int($0) }
    
    print(intsArray)  // [2, 4, 1, 2]
    

    解释:如果字符串不包含整数,Int() 返回nilflatMap 忽略nils 并解开Int() 返回的可选Ints。

    【讨论】:

      猜你喜欢
      • 2015-01-04
      • 2016-01-25
      • 1970-01-01
      • 1970-01-01
      • 2015-08-02
      • 2015-07-04
      • 1970-01-01
      • 2017-12-22
      • 2012-08-05
      相关资源
      最近更新 更多