2

我需要将 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 ¤¤

我正在使用的代码可以简化以达到相同的目的吗?

4

0 回答 0