我知道如何通过编程来做到这一点,但我相信有一种内置的方式……

我使用过的每种语言都有某种对象集合的默认文本表示,当您试图将Array与字符串连接起来或将其传递给print()函数等时,它会吐出这些文本表示。苹果的Swift语言是否有一种内置的方式,可以轻松地将数组转换为字符串,或者我们总是必须显式地对数组进行字符串化?


当前回答

可以使用print函数打印任何对象

或者使用\(name)将任何对象转换为字符串。

例子:

let array = [1,2,3,4]

print(array) // prints "[1,2,3,4]"

let string = "\(array)" // string == "[1,2,3,4]"
print(string) // prints "[1,2,3,4]"

其他回答

可以使用print函数打印任何对象

或者使用\(name)将任何对象转换为字符串。

例子:

let array = [1,2,3,4]

print(array) // prints "[1,2,3,4]"

let string = "\(array)" // string == "[1,2,3,4]"
print(string) // prints "[1,2,3,4]"

如果数组包含字符串,你可以使用String的join方法:

var array = ["1", "2", "3"]

let stringRepresentation = "-".join(array) // "1-2-3"

在Swift 2中:

var array = ["1", "2", "3"]

let stringRepresentation = array.joinWithSeparator("-") // "1-2-3"

如果您想使用特定的分隔符(连字符、空格、逗号等),这可能很有用。

否则,你可以简单地使用description属性,它返回数组的字符串表示形式:

let stringRepresentation = [1, 2, 3].description // "[1, 2, 3]"

提示:任何实现Printable协议的对象都有一个description属性。如果你在自己的类/结构中采用该协议,你也可以使它们打印友好

在Swift 3中

join变为joined,示例[nil, "1", "2"].flatMap({$0}).joined() joinWithSeparator变成了joined(separator:)(仅适用于字符串数组)

在Swift 4中

var array = ["1", "2", "3"]
array.joined(separator:"-")

在Swift 4中

let array:[String] = ["Apple", "Pear ","Orange"]

array.joined(separator: " ")

Swift等价于你所描述的是字符串插值。如果你考虑JavaScript做“x”+数组,在Swift中等价的是“x\(数组)”。

一般来说,字符串插值和Printable协议之间有一个重要的区别。只有特定的类符合Printable。每个类都可以以某种方式插入字符串。这在编写泛型函数时很有帮助。您不必将自己限制在Printable类上。

使用Swift 5,根据您的需要,您可以选择以下Playground示例代码之一来解决您的问题。


将字符数组转换为不带分隔符的字符串:

let characterArray: [Character] = ["J", "o", "h", "n"]
let string = String(characterArray)

print(string)
// prints "John"

将String数组转换为不带分隔符的String:

let stringArray = ["Bob", "Dan", "Bryan"]
let string = stringArray.joined(separator: "")

print(string) // prints: "BobDanBryan"

将字符串数组转换为单词之间带有分隔符的字符串:

let stringArray = ["Bob", "Dan", "Bryan"]
let string = stringArray.joined(separator: " ")

print(string) // prints: "Bob Dan Bryan"

将字符串数组转换为字符之间带有分隔符的字符串:

let stringArray = ["car", "bike", "boat"]
let characterArray = stringArray.flatMap { $0 }
let stringArray2 = characterArray.map { String($0) }
let string = stringArray2.joined(separator: ", ")

print(string) // prints: "c, a, r, b, i, k, e, b, o, a, t"

将float数组转换为数字之间带有分隔符的String:

let floatArray = [12, 14.6, 35]
let stringArray = floatArray.map { String($0) }
let string = stringArray.joined(separator: "-")

print(string)
// prints "12.0-14.6-35.0"