在Swift中添加删除货币格式

Paw*_*wes 1 nsnumberformatter swift

我用

func formatAmount(number:NSNumber) -> String {
    let formatter = NSNumberFormatter()
    formatter.numberStyle = .CurrencyStyle
    return formatter.stringFromNumber(number)!
}
Run Code Online (Sandbox Code Playgroud)

将数字更改为货币格式化字符串,但我需要删除格式并获取只是数字,我需要删除逗号和货币符号.有什么具体的方法吗?请告诉我.

我试过了

func removeFormatAmount(string:String) -> NSNumber {
    let formatter = NSNumberFormatter()
    formatter.numberStyle = .NoStyle
    formatter.currencySymbol = .None
    formatter.currencyGroupingSeparator = .None
    return formatter.numberFromString(string)!
}
Run Code Online (Sandbox Code Playgroud)

这给了我零价值.

更新 我发现,如果文本不包含$ sign,那么使用货币格式化将给出nil值,所以我所做的就是

if string.containsString("$") {
    formatter.numberStyle = .CurrencyStyle
}
return formatter.numberFromString(string)?.floatValue
Run Code Online (Sandbox Code Playgroud)

现在它给了我很好的结果.

pab*_*ros 6

您可以创建一个字符串扩展来执行此操作

对于Swift 3:

extension String {
    func removeFormatAmount() -> Double {
        let formatter = NumberFormatter()

        formatter.locale = Locale(identifier: "en_US")
        formatter.numberStyle = .currency
        formatter.currencySymbol = "$"
        formatter.decimalSeparator = ","

        return formatter.number(from: self) as Double? ?? 0
     }
}
Run Code Online (Sandbox Code Playgroud)

使用:

let currencyString = "$1,000.00"
let amount = currencyString.removeFormatAmount() // 1000.0
Run Code Online (Sandbox Code Playgroud)