2
目前我正在從包含貨幣字符的服務中接收字符串(例如「$ 123.44」,「123,44€」)。我想去掉這些他們的貨幣字符,以便對這些價格進行一些計算(增加貨幣,減去貨幣等)。剝離貨幣字符串的優雅方法?
我知道我可以替換某些字符的出現,然後在計算後再重新添加它們,但我覺得可能有更好的解決方案。
任何想法?
目前我正在從包含貨幣字符的服務中接收字符串(例如「$ 123.44」,「123,44€」)。我想去掉這些他們的貨幣字符,以便對這些價格進行一些計算(增加貨幣,減去貨幣等)。剝離貨幣字符串的優雅方法?
我知道我可以替換某些字符的出現,然後在計算後再重新添加它們,但我覺得可能有更好的解決方案。
任何想法?
您可以使用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
您可以使用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