2016-08-18 44 views
2

目前我正在從包含貨幣字符的服務中接收字符串(例如「$ 123.44」,「123,44€」)。我想去掉這些他們的貨幣字符,以便對這些價格進行一些計算(增加貨幣,減去貨幣等)。剝離貨幣字符串的優雅方法?

我知道我可以替換某些字符的出現,然後在計算後再重新添加它們,但我覺得可能有更好的解決方案。

任何想法?

回答

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