2016-08-18 9 views
2

현재 통화 문자 (예 : "$ 123.44", "123,44 €")가 포함 된 서비스에서 문자열을 수신합니다. 이 가격에 대한 계산을 수행하기 위해 통화 문자를 훔쳐서 (돈 추가, 돈 빼기 등)하고 싶습니다.통화 문자 문자열을 제거하는 우아한 방법?

나는 특정 문자의 발생을 대체 할 수 있고 나중에 계산 후에 다시 추가 할 수 있음을 알고 있지만 더 나은 해결책이있을 수 있다는 인상을받습니다.

아이디어가 있으십니까?

답변

2

당신은 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 
0

를 지정해야합니다 , 이렇게 :

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 
관련 문제