使用正确的百分号(即%)将百分号格式转换为zh(简体中文)

问题描述 投票:2回答:1

我想如下使用NumberFormatter生成zh-localized百分数,以便如下取代我自己的代码:

    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,以便它可以解决? (以及其他非拉丁语言)。

swift percentage chinese-locale numberformatter
1个回答
2
投票
您似乎暗示NumberFormatter的输出不正确。但是,作为华人,我可以自信地说“ 50%”是在zh语言环境中编写百分比的自然方法。这也可以从百度百科(中文维基百科)article中看出。我从未见过任何带有全角百分比符号的应用程序写入百分比。我什至无法在Mac上使用中文输入法输入它。

在我看来,“ 50%”看起来很奇怪,可能是因为它混合了全角和半角字符。我偶尔在日本网站上看到过“ 50%”,但仍然很少见。

如果您

真的想要的话,可以在percentSymbol中设置percentSymbol属性:

NumberFormatter
老实说,我相信let formatter = NumberFormatter()
formatter.percentSymbol = "%"
formatter.numberStyle = .percent
print(formatter.string(from: 0.5) ?? "failed")
的输出,它是由一群专业的本地化工程师设计的。 
© www.soinside.com 2019 - 2024. All rights reserved.