字符数组到Swift中的字符串

Pet*_*994 19 arrays swift

[Character]数组的输出当前是:

["E", "x", "a", "m", "p", "l", "e"]
Run Code Online (Sandbox Code Playgroud)

它应该是:

Example
Run Code Online (Sandbox Code Playgroud)

它可能"是在数组中,如下所示:""".那个输出应该是".

谢谢!

dfr*_*fri 35

另一个答案涵盖了你的数组是String元素之一的情况(这很可能就是这种情况:因为你没有提供我们数组的类型,我们可以使用Swift自己的类型推理规则来推测推断类型[String]).

Character但是,如果数组的元素实际上是类型,则可以直接使用Character序列初始值设定项String:

let charArr: [Character] = ["E", "x", "a", "m", "p", "l", "e"]
let str = String(charArr) // Example
Run Code Online (Sandbox Code Playgroud)

您的评论如下:如果您的示例数组由于某种原因是一个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
Run Code Online (Sandbox Code Playgroud)

您当然也可以(尝试)转换AnyCharacter元素,但即使在这种情况下,您也必须通过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
Run Code Online (Sandbox Code Playgroud)

  • @ Petravd1994:难道你有一个*可选*数组吗? (2认同)

vad*_*ian 9

只需使用joined()默认""分隔符:

let joinedString = ["E", "x", "a", "m", "p", "l", "e"].joined()
Run Code Online (Sandbox Code Playgroud)


Jos*_*ann 5

let e = ["E", "x", "a", "m", "p", "l", "e"]
print(e.reduce ("", +))
Run Code Online (Sandbox Code Playgroud)