我想使用 NumberFormatter
生成 zh 本地化百分比,如下所示,以便取代我自己的代码,如下所示:
let locale = Locale(identifier: lang)
let formatter = NumberFormatter()
formatter.locale = locale
formatter.numberStyle = .percent
formatter.maximumFractionDigits = d
let number = NSNumber(value: Double(n))
if let r = formatter.string(from: number) {
if lang == "zh" { return r.replace(["%"], withString: "%")
return r
}
// My fallback code
不幸的是,与我的代码不同,简体中文 NumberFormatter
生成拉丁文 %
符号,而不是中文版本 %
(因此替换补丁我做)。
我想知道是否可以进一步调整 NumberFormatter
以便它能够处理它? (以及其他非拉丁语言)。
最佳答案
您似乎暗示 NumberFormatter
输出的内容不正确。然而,作为一个土生土长的中国人,我可以自信地说“50%”是在 zh
语言环境中书写百分比的自然方式。这一点从百度百科(维基百科的中文版)article中也可以看出。 。我从未见过任何应用程序用全角百分号编写百分比。我什至无法在 Mac 上使用中文输入法输入它。
在我看来,“50%”看起来很奇怪,可能是因为它混合了全角和半角字符。我偶尔会在日本网站上看到“50%”,但还是很少见。
如果您确实想要,您可以设置 percentSymbol
NumberFormatter
中的属性:
let formatter = NumberFormatter()
formatter.percentSymbol = "%"
formatter.numberStyle = .percent
print(formatter.string(from: 0.5) ?? "failed")
说实话,我相信NumberFormatter
的输出,它是由一群专业的本地化工程师设计的。
关于swift - 使用正确的百分号(即%)将百分比数字格式化为zh(简体中文),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60686630/