从 iOS 13 开始,Foundation 具有 ListFormatter 类型。根据您的需要,您可以以不同的方式使用它来获取数组的文本表示。
使用ListFormatter 的最简单方法是使用其静态localizedString(byJoining:) 方法。以下 Swift 5.1 / iOS 13 Playground 示例代码展示了如何实现此方法以将您的数组转换为本地化字符串表示形式:
import Foundation
let array = [
"Anita",
"Jean",
"Peter"
]
let string = ListFormatter.localizedString(byJoining: array)
print(string) // prints: Anita, Jean, and Peter (for en_US locale)
作为localizedString(byJoining:) 的替代方案,您可以创建ListFormatter 的实例并使用string(from:) 方法。如果您需要为文本表示指定语言环境,这会很有用:
import Foundation
let array = [
"Anita",
"Jean",
"Peter"
]
let listFormatter = ListFormatter()
listFormatter.locale = Locale(identifier: "fr_FR") // set only if necessary
let string = listFormatter.string(from: array)
print(String(describing: string)) // prints: Optional("Anita, Jean et Peter")
如果需要,您还可以使用专门的格式化程序类型设置 ListFormatter 实例的 itemFormatter 属性:
import Foundation
let array = [
55,
112,
8
]
let locale = Locale(identifier: "es_ES") // set only if necessary
let numberFormatter = NumberFormatter()
numberFormatter.locale = locale
numberFormatter.numberStyle = NumberFormatter.Style.spellOut
let listFormatter = ListFormatter()
listFormatter.locale = locale
listFormatter.itemFormatter = numberFormatter
let string = listFormatter.string(from: array)
print(String(describing: string)) // prints: Optional("cincuenta y cinco, ciento doce y ocho")