2017-06-12 101 views
-4

需要过滤数组的帮助。阵列中的映射过滤器

let array = [pair: "TZS_SFDT", pair: "TZFD_TG", pair: "G_TDDD"] 

我怎么能分开的字母组中有两个对象,如:

arraySeperated1 = [part1: "TZS", part1:"TZFD", part1: "G"] 
arraySeperated2 = [part2: "SFDT", part2: "TG", part2: "TDDD"] 

感谢您的帮助!

+0

这些都是'Dictionaries' **不是数组** –

+0

在斯威夫特,[:]语法是字典和词典只能有唯一的密钥。所以'对:'不能被宣布两次或更多。 'part1:'相同,不能多次返回。 –

+0

所以,我需要过滤字典的帮助。 –

回答

0

尽我所能与非法代码执行(致命错误:字典文字包含重复键)是不是看到/把它解释为字符串数组:

let array = ["TZS_SFDT", "TZFD_TG", "G_TDDD"] 

然后把它分解:

let arraySeparated1 = array.map { $0.substring(to: $0.range(of: "_")!.lowerBound) } 
let arraySeparated2 = array.map { $0.substring(from: $0.range(of: "_")!.upperBound) } 

OK,澄清后评论,你实际上得到:

let array = [[pair: "TZS_SFDT", description: "", Value: 0], 
      [pair: "TZFD_TG", description: "", Value: 0], 
      [pair: "G_TDDD", description: "", Value: 0]] 

所以拆分为:

let arraySeparated1 = array.map { ["part1":$0.pair.substring(to: $0.pair.range(of: "_")!.lowerBound)] } 
let arraySeparated2 = array.map { ["part2":$0.pair.substring(from: $0.pair.range(of: "_")!.upperBound)] } 
+0

非常感谢!这正是我正在寻找的。 剩下的最后一个问题是,pair-values仍然包含引号。像一对:“\”TZS_SFDT \“”。 有没有办法“另外消除报价? –

+0

我知道,这是我的来源问题,但是在这个程序中解决这个问题也是很好的。 –

+0

Cœur:为什么它是非法的?Andy:你的原创问题已经得到解答,为什么不接受这个问题并提出一个关于裁剪你的字符串的新问题 – Mozahler