【发布时间】:2017-10-09 10:31:05
【问题描述】:
如何将数组(例如[Int])转换为字符串,在元素之间保留逗号?如果我有一个像[1,2,3,4] 这样的数组,我想接收一个像"1, 2, 3, 4" 这样的字符串。
【问题讨论】:
标签: ios swift cocoa-touch foundation
如何将数组(例如[Int])转换为字符串,在元素之间保留逗号?如果我有一个像[1,2,3,4] 这样的数组,我想接收一个像"1, 2, 3, 4" 这样的字符串。
【问题讨论】:
标签: ios swift cocoa-touch foundation
您只需将整数映射为字符串并使用分隔符", " 连接它们
let array = [1,2,3,4]
let string = array.map(String.init).joined(separator: ", ") // "1, 2, 3, 4"
【讨论】:
你可以这样做:
let string = array.map { String($0) }
.joined(separator: ", ")
map 调用将数字数组转换为字符串数组,joined 将它们组合成一个字符串,在各个字符串之间使用您想要的任何分隔符。
或者,如果要在 UI 中显示,数字可能需要小数点和/或千位分隔符,那么最好使用 NumberFormatter 以本地化格式显示结果:
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: $0) }
.joined(separator: ", ")
对于美国用户而言,这将导致:
1.00、1.10、1.20、1.30
但对于德国用户,它会导致:
1,00, 1,10, 1,20, 1,30
如果您希望在 iOS 13+ 和/或 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: $0) }
if let result = ListFormatter().string(from: strings) {
print(result)
}
导致:
1.00、1.10、1.20 和 1.30
【讨论】: