在Swift中添加删除货币格式

时间:2015-11-04 16:58:56

标签: swift nsnumberformatter

我用

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

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

我试过

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

这给了我零值。

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

if string.containsString("$") {
    formatter.numberStyle = .CurrencyStyle
}
return formatter.numberFromString(string)?.floatValue

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

5 个答案:

答案 0 :(得分:6)

您可以创建字符串扩展名来执行该操作

对于Swift 3:

function isPalindrome(str) {
    str = str.toLowerCase().replace(/\W+|_/g, '');
    return str == str.split('').reverse().join('');
}

使用:

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
     }
}

答案 1 :(得分:2)

func formatAmount(number:NSNumber) -> String{
    let formatter = NSNumberFormatter()
    formatter.numberStyle = .CurrencyStyle
    formatter.currencySymbol = ""                  // <--------
    formatter.currencyGroupingSeparator = ""       // <--------
    return formatter.stringFromNumber(number)!
}

答案 2 :(得分:0)

NSNumberFormatter有一个可以使用的函数numberFromString

let formatter = NSNumberFormatter()
formatter.numberStyle = .CurrencyStyle

if let number = formatter.numberFromString(string) {
    //Use number
}

如果你想要从数字开始的字符串,那么之后很容易就可以从那个数字构建一个字符串

var number = formatter.numberFromString(string)!
var string = "\(number)"

答案 3 :(得分:0)

func removeFormatAmount(string:String) -> NSNumber{
    let formatter = NSNumberFormatter()
    // specify a locale where the decimalSeparator is a comma
    formatter.locale = NSLocale(localeIdentifier: "pt_BR")
    formatter.numberStyle = .CurrencyStyle
    formatter.currencySymbol = "$"
    formatter.decimalSeparator = ","
    return formatter.numberFromString(string) ?? 0
}


removeFormatAmount("$15,99")    // 15.99

答案 4 :(得分:0)

快速4 +

这将从所有语言中删除货币格式

[Serializable]
public class Question
{
    public string text;
    public string correct;
    public string answer1;
    public string answer2;
    public string answer3;
}
[Serializable]
public class RootObject
{
    public List<Question> question;
}

示例:

    extension String {
        public func removeFormatAmount() -> Double {
            let formatter = NumberFormatter()
            formatter.locale = Locale.current
            formatter.numberStyle = .currency
            formatter.currencySymbol = Locale.current.currencySymbol
            formatter.decimalSeparator = Locale.current.groupingSeparator
            return formatter.number(from: self)?.doubleValue ?? 0.00
        }
    }
相关问题