我需要将 an 格式化NSNumber
为以下格式(示例):
123,456.44 EUR
, 123.456,44 CHF
, 123'456'123,44 USD
.
简而言之,应该遵守语言环境规则,但货币代码应始终放在值的右侧。
我怎么能从NumberFormatter
? 通过使用以下代码,我已经设法获得了我想要的确切结果:
let currencyFormatter = NumberFormatter()
let locale = Locale.autoupdatingCurrent
let grouping = locale.groupingSeparator ?? ""
let decimal = locale.decimalSeparator ?? ""
currencyFormatter.numberStyle = .currencyISOCode
currencyFormatter.locale = locale
currencyFormatter.currencyCode = currencyCode // My Custom currency code passed from the context, e.g. CHF, EUR, NOK, SEK, USD
currencyFormatter.maximumFractionDigits = 2
currencyFormatter.minimumFractionDigits = 2
let format = "#\(grouping)##0\(decimal)00 ¤¤" // Here I'm setting the exact format I want the string to be
currencyFormatter.positiveFormat = format
currencyFormatter.negativeFormat = "-" + format
但是,我认为,可能有一个更简单的解决方案。我尝试使用positiveSuffix
并将其设置为¤¤
,但输出字符串不正确,例如EUR 123,123.22 ¤¤
。
我正在使用的代码可以简化以达到相同的目的吗?