【发布时间】:2018-03-08 03:28:20
【问题描述】:
我正在寻找一种通用且实用的解决方案,将数组的 x 元素连接到新的字符串数组。从第一个元素开始,第一个到第二个,第二个到第三个等等......抱歉解释不是很清楚,但我很难说出我想要实现的目标。所以我会尝试用例子来演示。
1) 如果我想将字母 2 与 2 连接起来,我会使用这个函数:
var letters = ["a","b","c","d","e"]
func concatenateStrings(array: [String]) -> [String] {
return array.reduce([], { (result: [String], item:String) -> [String] in
guard !result.isEmpty else {
return [item] //first item
}
return result + [ array[result.count - 1] + " \(item)"]
})
}
这会产生这个结果["a", "a b", "b c", "c d", "d e"]
2) 3 乘 3
func concatenateStrings(array: [String]) -> [String] {
return array.reduce([], { (result: [String], item:String) -> [String] in
guard !result.isEmpty else {
return [item] //first item
}
guard result.count != 1 else {
return result + [array[result.count - 1] + " \(item)"] // second item
}
let first = array[result.count - 2]
let second = array[result.count - 1]
return result + [ "\(first) " + second + " \(item)"]
})
}
这给了我["a", "a b", "a b c", "b c d", "c d e"]
我的问题是如何推广这种方法,例如,如果我想通过连接 4 个元素、5 个数组元素等来生成一个新的字符串数组......
谢谢,如果还有什么不清楚的地方,我会很乐意尝试更彻底。
【问题讨论】: