2015-11-28 162 views
3

我有一个字符串作为一个变量,一个字符串作为另一个变量。我想将集合中的所有字符串追加到单个字符串中。将字符串数组附加到Swift中的字符串

因此,例如,我有:

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

我的答案被删除,并解释为“仅限代码的答案被认为是低质量的,可能会被删除”。你可以使用arrayOfStrings.reduce(s,combine:+)。 – user3441734

回答

9

您可以使用joinWithSeparator

let stringArray = ["Hello", "World"] 
let sentence = stringArray.joined(separator: " ") // "Hello World" 
5

你可以使用joinWithSeparator(String) 下面是一个例子

var array = ["1", "2", "3"] 
let stringRepresentation = array.joinWithSeparator("-") // "1-2-3" 

源的数组转换为字符串:How do I convert a Swift Array to a String?]

2

至少有这里有两个选项。最有语义的选择可能是joinWithSeparator对象[String]。这连接了数组中的每个字符串,将分隔符作为每个字符串之间的参数提供。

let result = ["a", "b", "c", "d"].joinWithSeparator("") 

另一种方法是使用函数reduce和连接字符串的+函数运算符。如果您希望将其他逻辑作为组合的一部分,这可能是首选。这两个示例代码都产生相同的结果。

let result = ["a", "b", "c", "d"].reduce("", combine: +) 

这也是值得注意的第二选项是移植到可以添加任何类型的,而第一只与串序列工作的,因为它是对一个SequenceType where Generator.Element == String协议扩展定义。