현재 통화 문자 (예 : "$ 123.44", "123,44 €")가 포함 된 서비스에서 문자열을 수신합니다. 이 가격에 대한 계산을 수행하기 위해 통화 문자를 훔쳐서 (돈 추가, 돈 빼기 등)하고 싶습니다.통화 문자 문자열을 제거하는 우아한 방법?
나는 특정 문자의 발생을 대체 할 수 있고 나중에 계산 후에 다시 추가 할 수 있음을 알고 있지만 더 나은 해결책이있을 수 있다는 인상을받습니다.
아이디어가 있으십니까?
현재 통화 문자 (예 : "$ 123.44", "123,44 €")가 포함 된 서비스에서 문자열을 수신합니다. 이 가격에 대한 계산을 수행하기 위해 통화 문자를 훔쳐서 (돈 추가, 돈 빼기 등)하고 싶습니다.통화 문자 문자열을 제거하는 우아한 방법?
나는 특정 문자의 발생을 대체 할 수 있고 나중에 계산 후에 다시 추가 할 수 있음을 알고 있지만 더 나은 해결책이있을 수 있다는 인상을받습니다.
아이디어가 있으십니까?
당신은 Double
값
func getNumber(formattedPrice: String, localeID: String) -> Double? {
let formatter = NSNumberFormatter()
formatter.numberStyle = .CurrencyStyle
formatter.locale = NSLocale(localeIdentifier: localeID)
return formatter.numberFromString(formattedPrice)?.doubleValue
}
로 포맷 된 가격을 변환 할 NSNumberFormatter
를 사용할 수 있지만 당신은 그 문자를 근절하기 위해 NSCharacterSet
을 사용할 수 있습니다 당신은 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
를 지정해야합니다 , 이렇게 :
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