我知道如何通过编程来做到这一点,但我相信有一种内置的方式……
我使用过的每种语言都有某种对象集合的默认文本表示,当您试图将Array与字符串连接起来或将其传递给print()函数等时,它会吐出这些文本表示。苹果的Swift语言是否有一种内置的方式,可以轻松地将数组转换为字符串,或者我们总是必须显式地对数组进行字符串化?
我知道如何通过编程来做到这一点,但我相信有一种内置的方式……
我使用过的每种语言都有某种对象集合的默认文本表示,当您试图将Array与字符串连接起来或将其传递给print()函数等时,它会吐出这些文本表示。苹果的Swift语言是否有一种内置的方式,可以轻松地将数组转换为字符串,或者我们总是必须显式地对数组进行字符串化?
当前回答
当您想要将结构类型的列表转换为字符串时,请使用此方法
struct MyStruct {
var name : String
var content : String
}
let myStructList = [MyStruct(name: "name1" , content: "content1") , MyStruct(name: "name2" , content: "content2")]
然后像这样隐藏你的数组
let myString = myStructList.map({$0.name}).joined(separator: ",")
将产生===> "name1,name2"
其他回答
如果你想在数组中丢弃空字符串。
["Jet", "Fire"].filter { !$0.isEmpty }.joined(separator: "-")
如果你也想过滤nil值:
["Jet", nil, "", "Fire"].flatMap { $0 }.filter { !$0.isEmpty }.joined(separator: "-")
如果你的问题是这样的: tobeFormattedString = ["a", "b", "c"] 输出= "abc"
String(tobeFormattedString)
修改一个可选/非可选字符串数组
//Array of optional Strings
let array : [String?] = ["1",nil,"2","3","4"]
//Separator String
let separator = ","
//flatMap skips the nil values and then joined combines the non nil elements with the separator
let joinedString = array.flatMap{ $0 }.joined(separator: separator)
//Use Compact map in case of **Swift 4**
let joinedString = array.compactMap{ $0 }.joined(separator: separator
print(joinedString)
这里是flatMap, compactMap跳过数组中的nil值,并附加其他值以给出一个连接字符串。
如果你有字符串数组列表,那么转换为Int
let arrayList = list.map { Int($0)!}
arrayList.description
它会给你字符串值
对于任何元素类型
extension Array {
func joined(glue:()->Element)->[Element]{
var result:[Element] = [];
result.reserveCapacity(count * 2);
let last = count - 1;
for (ix,item) in enumerated() {
result.append(item);
guard ix < last else{ continue }
result.append(glue());
}
return result;
}
}