[Character]数组目前的输出为:
["E", "x", "a", "m", "p", "l", "e"]
应该是:
Example
可能数组中存在"
,就像这样:"""
。输出应该是"
。
谢谢!
String
的情况(这也很可能是您的情况,因为您没有提供数组类型,我们可以使用Swift自己的类型推断规则来猜测类型为[String]
)。Character
类型,则可以直接使用String
的Character
序列初始化器:let charArr: [Character] = ["E", "x", "a", "m", "p", "l", "e"]
let str = String(charArr) // Example
Any
元素(通常不建议显式使用,但有时从某些外部源接收数据时会出现这种情况),则需要先尝试将每个Any
元素转换为String
类型,然后将转换后的元素连接成单个String
实例。转换完成后,您将使用一个String
元素数组,此时其他答案中显示的方法将是连接的适当方法:// e.g. using joined()
let arr: [Any] = ["E", "x", "a", "m", "p", "l", "e"]
let str = arr.flatMap { $0 as? String }.joined()
print(str) // example
您也可以尝试将Any
转换为Character
元素,但即便如此,您仍需通过String
实例进行转换。因此,在处理[Any]
的情况时,建议使用上述的joined()
方法而非下面的方法:
let arr: [Any] = ["E", "x", "a", "m", "p", "l", "e"]
let str = String(arr.flatMap { ($0 as? String)?.characters.first })
print(str) // example
String(describing:)
产生的字符串与 print()
基本相同。为什么你将数组创建为 [Any]
?Swift 不知道它是 [Character]
,因此它不允许你使用正确的初始化程序调用它。 - Alexander只需使用默认的分隔符""
和joined()
方法:
let joinedString = ["E", "x", "a", "m", "p", "l", "e"].joined()
let e = ["E", "x", "a", "m", "p", "l", "e"]
print(e.reduce ("", +))
log_2(count)
次内存重新分配)。而且这也是不必要的,因为 String
有一个初始化器,可以从 Character
数组构造字符串。 - Alexander