这个问题与我的Previous question
有关我正在用Swift 4.2编写iOS应用
来自服务器的响应是一个字符串,其值由竖线字符“”分隔。它包含许多用“ $”分隔的值行。我想将其拆分为子数组。
行用“ $ ”分隔,元素用“ | ”分隔
响应:
示例:“ 001 |苹果|红色$ 002 |香蕉|黄色$ 003 |葡萄|紫色$”
预期输出:
[[001,“苹果”,“红色”],[002,“香蕉”,“黄色”],[003,“葡萄”,“紫色”]]
答案 0 :(得分:2)
var str = "001|apple|red$002|banana|yellow$003|grapes|purple$"
var arr = [[String]]()
for item in str.components(separatedBy: "$")
{
if item.count > 0
{
arr.append(item.components(separatedBy: "|"))
}
}
print(arr)
答案 1 :(得分:1)
此代码应执行您想要的操作:
let src = "001|apple|red$002|banana|yellow$003|grapes|purple$"
let result = src.split(separator: "$").map { $0.split(separator: "|").map(String.init) }
// result = [["001", "apple", "red"], ["002", "banana", "yellow"], ["003", "grapes", "purple"]]
如果可以确定子数组的类型为.map(String.init)
,则可以在最后一个闭包中删除[String.SubSequence]