Swift:将数组转成字符串

Swift: Turn array into String

如何将数组(例如 [Int] 转换为在元素之间保持逗号的字符串?如果我有一个像 [1,2,3,4] 这样的数组,我想接收一个像 "1, 2, 3, 4" 这样的字符串。

您只需要将整数映射到字符串并使用分隔符连接它们 ", "

let array = [1,2,3,4]
let string = array.map(String.init).joined(separator: ", ")   //  "1, 2, 3, 4"

你可以这样做:

let string = array.map { String([=10=]) }
    .joined(separator: ", ")

map 调用将数字数组转换为字符串数组,joined 将它们组合成一个字符串,在各个字符串之间使用您想要的任何分隔符。

或者,如果要在 UI 中显示,数字可能需要小数点 and/or 千位分隔符,那么最好使用 [=15] 以本地化格式显示结果=]:

let array = [1.0, 1.1, 1.2, 1.3]
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = 2
formatter.minimumFractionDigits = 2

let string = array.compactMap { formatter.string(for: [=11=]) }
    .joined(separator: ", ")

对于美国用户,这将导致:

1.00, 1.10, 1.20, 1.30

但对于德国用户,这将导致:

1,00, 1,10, 1,20, 1,30

如果您希望在 iOS 13+ and/or macOS 10.15+ 中将其很好地呈现为“A、B 和 C”,您可以使用 ListFormatter:

let array = [1.0, 1.1, 1.2, 1.3]
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = 2
formatter.minimumFractionDigits = 2

let strings = array.compactMap { formatter.string(for: [=12=]) }
if let result = ListFormatter().string(from: strings) {
    print(result)
}

导致:

1.00, 1.10, 1.20, and 1.30