使用NSNumberFormatter垫空格的货币符号和值之间(Using NSNumberForm

2019-10-20 02:44发布

道歉,如果这是一个愚蠢的问题,但我想格式化为我的iPhone应用程序的货币价值,我在努力左对齐的货币符号,但右对齐的值。 因此,“$; 123.45&”被格式化为(比方说)

  $; 123.45& 
取决于格式宽度。 这是一种会计格式(我认为)的。

我试着NSNumberFormatter各种方法,但不能得到我所需要的。

任何人都可以就如何做到这一点?

谢谢

Answer 1:

您正在寻找的paddingPosition财产NSNumberFormatter 。 您需要将其设置为NSNumberFormatterPadAfterPrefix为所需的格式。



Answer 2:

这并没有为我工作。 我能够这样做是为了增加货币符号和金额之间的空间。

雨燕3.0

currencyFormatter.negativePrefix = "\(currencyFormatter.negativePrefix!) "
currencyFormatter.positivePrefix = "\(currencyFormatter.positivePrefix!) "

完整的代码:

extension Int {
    func amountStringInCurrency(currencyCode: String) -> (str: String, nr: Double) {
        let currencyFormatter = NumberFormatter()
        currencyFormatter.usesGroupingSeparator = true
        currencyFormatter.numberStyle = .currency
        currencyFormatter.currencyCode = currencyCode
        currencyFormatter.negativePrefix = "\(currencyFormatter.negativePrefix!) "
        currencyFormatter.positivePrefix = "\(currencyFormatter.positivePrefix!) "

        let nrOfDigits = currencyFormatter.maximumFractionDigits
        let number: Double = Double(self)/pow(10, Double(nrOfDigits))
        return (currencyFormatter.string(from: NSNumber(value: number))!, number)
    }
}

该扩展是一个Int表达在MinorUnits量。 即美元与2位数字表达,而日元是没有数字表示。 因此,这是这个扩展将返回:

let amountInMinorUnits: Int = 1234
amountInMinorUnits.amountStringInCurrency(currencyCode: "USD").str // $ 12.34
amountInMinorUnits.amountStringInCurrency(currencyCode: "JPY").str // JP¥ 1,234

千和小数点分隔符确定由用户的语言环境。



文章来源: Using NSNumberFormatter to pad spaces between a currency symbol and the value