假设我从API下载了以下数据列表:
[
"Anita",
"Jean",
"Peter"
]
我想以自然的句子格式列出这些数据。例如,在美式英语中,应该向用户显示以下字符串:
Anita, Jean, and Peter
但是,例如,如果用户是瑞典人,他们应该看到以下字符串:
Anita, Jean och Peter
请注意,牛津逗号不见了,瑞典语使用不同的单词表示“and”,这是瑞典语用户希望看到的。如何以自然语言的方式格式化这些数据,以尊重用户的位置?可以有可变的数据量,不一定只有3个项目。我的直觉是将Formatter
/NSFormatter
子类化,但我想构建它的方式可以很容易地扩展到支持我不会说的语言,所以我想知道是否有iOS标准或第三方格式化程序,我在搜索中找不到
2条答案
按热度按时间dzjeubhm1#
从iOS 13开始,Foundation有一个
ListFormatter
类型。根据您的需要,您可以以不同的方式使用它来获得数组的文本表示。使用
ListFormatter
最简单的方法是使用它的静态localizedString(byJoining:)
方法。下面的Swift 5.1 / iOS 13 Playground示例代码展示了如何实现此方法,以便将数组转换为本地化的字符串表示:作为
localizedString(byJoining:)
的替代方案,您可以创建ListFormatter
的示例并使用string(from:)
方法。如果您需要为文本表示指定区域设置,这可能很有用:如果需要,您还可以使用专门的格式化程序类型设置
ListFormatter
示例的itemFormatter
属性:vfh0ocws2#
在以前的iOS版本中,这个问题仍然没有解决,如果你有一个答案,我仍然很感激。然而,iOS 13公开了
NSListFormatter
,它可以用来做到这一点。例如:斯威夫特:
Objective-C: