我有一个变量的字符串数组,另一个变量的字符串。我想将集合中的所有字符串附加到单个字符串中。
例如,我有:
var s = String()
//have the CSV writer create all the columns needed as an array of strings
let arrayOfStrings: [String] = csvReport.map{GenerateRow($0)}
// now that we have all the strings, append each one
arrayOfStrings.map(s.stringByAppendingString({$0}))
上面的一行失败了。我已经尝试了我能想到的每一个组合,但最终,我无法得到它,除非我只是创建一个for循环来遍历整个集合,arrayOfStrings,然后通过一。我觉得我可以使用地图或其他功能以同样的方式实现这一目标。
任何帮助?
谢谢!
答案 0 :(得分:15)
您可以使用joinWithSeparator:
let stringArray = ["Hello", "World"]
let sentence = stringArray.joined(separator: " ") // "Hello World"
答案 1 :(得分:6)
您可以使用joinWithSeparator(String)
将数组转换为字符串
这是一个例子
var array = ["1", "2", "3"]
let stringRepresentation = array.joinWithSeparator("-") // "1-2-3"
答案 2 :(得分:2)
这里至少有两个选项。 joinWithSeparator
对象上最具语义选择的可能是[String]
。这会连接数组中的每个字符串,将分隔符作为参数提供在每个字符串之间。
let result = ["a", "b", "c", "d"].joinWithSeparator("")
另一种方法是使用函数reduce
和+函数运算符来连接字符串。如果您想要将其他逻辑作为组合的一部分,这可能是首选。两个示例代码都产生相同的结果。
let result = ["a", "b", "c", "d"].reduce("", combine: +)
值得注意的是,第二个选项可以转移到任何可以添加的类型,而第一个选项只适用于一系列字符串,因为它是在SequenceType where Generator.Element == String
的协议扩展上定义的。