我有一个包含数字和空字符串的数组,例如["", "2", "4", "", "", "1", "2", ""]
。我想把它缩小到一个数字列表,比如[2,4,1,2]
。
我的第一个努力将其分为两个步骤,首先去掉空字符串,然后进行字符串到整数的转换。但是,我的第一步代码没有按预期工作。
for (index,value) in tempArray.enumerate(){
if value == "" {
tempArray.removeAtIndex(index)
}
}
这失败了,我相信因为它使用了原始完整数组中的索引值,但是在第一次删除后它们不再准确。
实现目标的更好方法是什么,将生成的整数字符串数组转换为整数数组的最佳方法是什么?
答案 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,我们可以利用flatMap
和Int()
:
let stringsArray = ["", "2", "4", "", "", "1", "2", ""]
let intsArray = stringsArray.flatMap { Int($0) }
print(intsArray) // [2, 4, 1, 2]
说明:Int()
如果字符串不包含整数,则返回nil
,flatMap
忽略nil
并解包返回的可选Int
Int()
。