swift - 使用正确的百分号(即%)将百分比数字格式化为zh(简体中文)

标签 swift percentage chinese-locale numberformatter

我想使用 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/

相关文章:

ios - 错误处理程序 : NO with WCErrorCodeDeliveryFailed - not sure where I am going wrong

javascript - Math.random() Javascript - 百分比和权重

mysql - 如何通过分组计算多行的百分比

css - 独立于容器的真正响应百分比图像大小调整

xml - 将包含中文字符的 XML 发布到 Microsoft Translator API 会引发反序列化异常

swift - 如何将 UIImage 放在 UILabel 前面 - Swift

swift - NSMutableAttributedString 中可能存在错误

ios - 如何将拍摄的照片放到主线程?

r - 如何用 knitr::spin 显示/打印汉字

php - 在 PHP 中对中文名称进行排序