将2d字符串数组转换为double swift的2d数组

时间:2018-08-16 15:23:27

标签: arrays swift string type-conversion double

我有2个数组:

var locationString = [[String]]()
var doubleArray = [[Double]]()

运行解析器后会追加数组数据,以防万一您想知道为什么没有数据。

基本上,我正在尝试将 locationString 从字符串转换为双精度。 我最初尝试了以下方法:

let doubleArray = locationString.map{ Double($0) }

但这似乎不起作用,因为我得到以下错误:

Cannot invoke initializer for type 'Double' with an argument list of type ((String]))

谢谢您的任何帮助。

1 个答案:

答案 0 :(得分:2)

mapcompactMap映射一起使用:

let doubleArray = locationString.map { $0.compactMap(Double.init) }

示例:

let locationString = [["1.2", "2.3"], ["3.4", "4.4", "hello"]]

let doubleArray = locationString.map { $0.compactMap(Double.init) }

print(doubleArray) // [[1.2, 2.3], [3.4, 4.4]]

外部map处理每个字符串数组。内部compactMapString转换为Double,如果转换返回nil,则将其丢弃,因为String不是有效的Double


要在转换为String之前在Double中修剪开头和结尾的空格,请使用.trimmingCharacters(in: .whitespaces)

let doubleArray = locationString.map { $0.compactMap { Double($0.trimmingCharacters(in: .whitespaces )) } }