Swift - 从数组中修剪元素,将整数字符串转换为整数

时间:2015-09-30 21:47:18

标签: arrays swift types swift2

我有一个包含数字和空字符串的数组,例如["", "2", "4", "", "", "1", "2", ""]。我想把它缩小到一个数字列表,比如[2,4,1,2]

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

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

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

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

2 个答案:

答案 0 :(得分:3)

var str = ["", "2", "4", "", "", "1", "2", ""]

let filtered = str.filter {$0 != "" }

let intArr = filtered.map {($0 as NSString).integerValue}

答案 1 :(得分:2)

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

let stringsArray = ["", "2", "4", "", "", "1", "2", ""]

let intsArray = stringsArray.flatMap { Int($0) }

print(intsArray)  // [2, 4, 1, 2]

说明:Int()如果字符串不包含整数,则返回nilflatMap忽略nil并解包返回的可选Int Int()