gpt4 book ai didi

ios - NSNumberFormatter.numberFromString() 为 ar-SA 语言环境返回 nil

转载 作者:搜寻专家 更新时间:2023-10-31 22:30:59 26 4
gpt4 key购买 nike

我正在尝试使用 NSNumberFormatterNSNumberFormatterStyle.DecimalStyle 格式化所选语言环境的 UILabel 文本,并将格式化程序的语言环境设置为 ar-SA

UILabel 文本中有大量数字被转换为 E 记数法(科学计数法),例如“1e9”、“2.3456e24”等时,numberFromString()ar-SA 语言环境返回 nil。但是,它适用于其他语言环境。

@IBOutlet weak var displayText: UILabel!

let format = NSNumberFormatter()
format.numberStyle = NSNumberFormatterStyle.DecimalStyle
format.locale = NSLocale(localeIdentifier: language)// where language = "ar-SA" or "en-US" or "de-DE"
format.maximumFractionDigits = 16

var result = displayText.text! // result = "1e9" or "2.3456e24"
guard let number = format.numberFromString(result), let string = format.stringFromNumber(number) else {
displayText.text = "Error"
return
}
result = string

如何解决这个问题? ar-SA 语言环境和 E 符号一起使用有什么限制吗?

最佳答案

您可以将数字转换为“en”语言环境,然后将结果字符串转换为“ar_SA”语言环境。显然,“ar_SA”语言环境无法识别“e”符号。

let format = NSNumberFormatter()
format.numberStyle = NSNumberFormatterStyle.DecimalStyle
format.locale = NSLocale(localeIdentifier: "en")
format.maximumFractionDigits = 16

var result = displayText.text!
guard let number = format.numberFromString(result), let string = format.stringFromNumber(number) else {
return
}

format.locale = NSLocale(localeIdentifier: "ar_SA")
guard let string2 = format.stringFromNumber(number) else {
return
}
result = string2

关于ios - NSNumberFormatter.numberFromString() 为 ar-SA 语言环境返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39048427/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com