Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 将字符串拆分为[[Int]]_Swift - Fatal编程技术网

Swift 将字符串拆分为[[Int]]

Swift 将字符串拆分为[[Int]],swift,Swift,我有一个字符串,想把它拆分成一个[[Int]] let string = "1,2,3;4,5,6;7,8,9" // comma and semicolon separators! 结果应该是 [[1,2,3],[4,5,6],[7,8,9]] 我知道使用hot可以拆分为[Int] let string = "1,2,3,4,5,6,7,8,9" var intArray = string.split(separator: ","

我有一个
字符串
,想把它拆分成一个
[[Int]]

let string = "1,2,3;4,5,6;7,8,9" // comma and semicolon separators!
结果应该是

[[1,2,3],[4,5,6],[7,8,9]]
我知道使用hot可以拆分为
[Int]

let string = "1,2,3,4,5,6,7,8,9"
var intArray = string.split(separator: ",").compactMap { Int($0) }
但我不知道如何将其拆分为
[[Int]]

let string = "1,2,3;4,5,6;7,8,9" // comma and semicolon separators!
我试过了

var intArray = string.split(separator: ";").split(separator: ",").compactMap { Int($0) }
第一次
拆分
创建了一个
[String]
,但第二次
拆分
不起作用

解决方案

一位朋友帮我解决了这个问题,所以我也想在这里提供解决方案:

var intArray = string.split(separator: ";").map { $0.split(separator: ",").compactMap { Int($0) } }

这就是你要找的班轮

import UIKit
let string = "1,2,3;4,5,6;7,8,9"

var intArray = string.split(separator: ";").map {$0.split(separator: ",").map {Int($0)!} }

print(intArray)
或者,您可以使用
components
方法按分号拆分,在生成的数组上应用
forEach
,以便附加相同的按逗号拆分的数组,在该数组上应用映射将其从
[String]
转换为
[Int]

var array : [[Int]] = []

string.components(separatedBy: ";").forEach { sub in
    array.append((sub.components(separatedBy: ",")).map { Int($0)!} )
}

print(array)
两者都将输出:

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

用分号分隔符拆分,然后用逗号分隔符拆分。看起来很简单。@matt我知道,但不知道怎么做似乎很简单。显示一些代码,我们可以埋头苦干,并帮助您。从头开始为您编写代码不是我们的工作。我知道我会怎么做,但我的想法是帮助你怎么做。请记住,split最初会为您提供子字符串;您需要将这些映射到字符串才能继续。您需要另一个
映射
,以便将第二次拆分应用于第一次拆分后的每个子字符串。有关类似任务,请参阅。在编辑到文章中的解决方案中,第一个(外部)
compactMap
可以更改为
map
,因为其主体不能返回
nil