NumberFormatter 在 Swift 中无法识别来自不同本地的数字 [关闭]
Posted
技术标签:
【中文标题】NumberFormatter 在 Swift 中无法识别来自不同本地的数字 [关闭]【英文标题】:NumberFormatter does not recognise numbers from different Local in Swift [closed] 【发布时间】:2022-01-22 00:23:38 【问题描述】:NumberFormatter 无法识别已转换为当地货币的数字。例如如下所示的数字格式,
3,490,000.89 3 490 000,89 3.490.000,89
extension NumberFormatter
static func value(maximumFractionDigits: Int = 2) -> NumberFormatter
let formatter = NumberFormatter()
formatter.locale = Locale.current
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = maximumFractionDigits
formatter.negativePrefix = "-"
return formatter
【问题讨论】:
嗯,它只识别使用Locale.current
格式化的数字。 Locale.current
是什么?
NumberFormatter.locale
需要匹配用于生成您尝试解析的格式化数字的区域设置。
我是英国人,但是当号码是 2,334 时。假设我在“2,334”到“2,3345”中添加了另一个数字,那么它似乎无法识别。我正在使用 combine
如果您将小数作为千位分隔符,则“2,3345”不是有效格式,因此预计会失败
【参考方案1】:
NumberFormatter 非常具体。它只会采用与其配置方式完全匹配的字符串。如果您将 numberFormatter 配置为使用逗号作为千位分隔符并使用点作为小数分隔符,它会将“1,234.56”转换为数字,而不是“1.234,56”(对于德国的语言环境来说这是预期的。 )
在您的问题中,您显示了以 3 种不同方式格式化的数字字符串。除非您在转换之间更改其设置(可能是区域设置),否则您将无法使用单个数字格式化程序将它们全部转换。
【讨论】:
问题已结束。我不清楚为什么甚至可以添加这个答案。但无论如何,回答别人无法回答的问题被认为是不好的形式。 @matt 我不认为它在我回答时已关闭。我没有任何我知道的特殊 SO 权力。 这个答案前半小时就关门了。也许有滞后。 这就是历史所显示的,但我不记得当我阅读并回复它时它显示为关闭。好奇。以上是关于NumberFormatter 在 Swift 中无法识别来自不同本地的数字 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章