将字符串数组附加到Swift中的字符串
问题描述:
我有一个字符串作为一个变量,一个字符串作为另一个变量。我想将集合中的所有字符串追加到单个字符串中。将字符串数组附加到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并逐一添加它,否则我无法得到它。我觉得我可以通过使用地图或其他功能来实现这一点。
任何帮助?
谢谢!
答
您可以使用joinWithSeparator:
let stringArray = ["Hello", "World"]
let sentence = stringArray.joined(separator: " ") // "Hello World"
答
你可以使用joinWithSeparator(String)
下面是一个例子
var array = ["1", "2", "3"]
let stringRepresentation = array.joinWithSeparator("-") // "1-2-3"
源的数组转换为字符串:How do I convert a Swift Array to a String?]
答
至少有这里有两个选项。最有语义的选择可能是joinWithSeparator
对象[String]
。这连接了数组中的每个字符串,将分隔符作为每个字符串之间的参数提供。
let result = ["a", "b", "c", "d"].joinWithSeparator("")
另一种方法是使用函数reduce
和连接字符串的+函数运算符。如果您希望将其他逻辑作为组合的一部分,这可能是首选。这两个示例代码都产生相同的结果。
let result = ["a", "b", "c", "d"].reduce("", combine: +)
这也是值得注意的第二选项是移植到可以添加任何类型的,而第一只与串序列工作的,因为它是对一个SequenceType where Generator.Element == String
协议扩展定义。
我的答案被删除,并解释为“仅限代码的答案被认为是低质量的,可能会被删除”。你可以使用arrayOfStrings.reduce(s,combine:+)。 – user3441734