剥离货币字符串的优雅方式?

时间:2016-08-18 23:54:53

标签: swift currency

目前我正在接收来自包含货币字符的服务的字符串(例如“$ 123.44”,“123,44€”)。我想剥掉这些货币字符的叮咬,以便对这些价格进行一些计算(增加金钱,减去金钱等等)。

我知道我可以替换某些字符的出现次数,然后在计算后再重新添加它们,但我觉得可能有更好的解决方案。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您可以使用NSNumberFormatter将格式化的价格转换为Double

func getNumber(formattedPrice: String, localeID: String) -> Double? {
    let formatter = NSNumberFormatter()
    formatter.numberStyle = .CurrencyStyle
    formatter.locale = NSLocale(localeIdentifier: localeID)
    return formatter.numberFromString(formattedPrice)?.doubleValue
}

但您需要指定locale

getNumber("$123.44", localeID: "en_US") // 123.44
getNumber("123,44€", localeID: "it_IT") // 123.44
getNumber("£123.44", localeID: "en_UK") // 123.44

答案 1 :(得分:0)

您可以使用NSCharacterSet根除这些字符,如下所示:

var dollarStr = "$1.50"
var yuanStr = "¥18.25"
var euroStr = "20.75 €"

let strArray = [dollarStr, yuanStr, euroStr]

let charSet = NSCharacterSet(charactersInString: "$¥€ ")

for str in strArray {
    let trimmedStr = str.stringByTrimmingCharactersInSet(charSet)
    print(trimmedStr)
}

打印出来:

1.50
18.25
20.75