2009-12-21 4 views
2

나는 프랑스 - 수 - 스타일의 문자열에서 숫자를 얻을 수있다 : 나는 NSNumberFormattern를 사용하는 경우 "30.000,00" 그것은 30 반환로케일 특정 문자열의 구문 분석 번호?

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 
NSNumber *priceNumberValue = [numberFormatter numberFromString:@30.000"]; 

구문 분석 @, 내 기대 수익 내가 사용하려고 30000 입니다 다른 옵션

NSLocale *vnLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"fr_FR"]; 
[numberFormatter setLocale:vnLocale]; 

또는

[numberFormatter setDecimalSeparator:@","]; 

하지만 여전히 예기치 않은 값을 반환 : 30

@ "30.000,00"을 NSNumberFormatter 구문 분석에 알리는 올바른 방법은 무엇입니까?

답변

3

로케일이 작동합니다 설정,하지만 당신은 그룹 구분 사용하도록 NumberFormatter는 말할해야합니다 : 문제가 해결되지 않으면

[numberFormatter setUsesGroupingSeparator:YES]; 

를, 다음이 확실히 작동합니다

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 
[numberFormatter setDecimalSeparator:@","]; 
[numberFormatter setGroupingSeparator:@"."]; 
[numberFormatter setUsesGroupingSeparator:YES]; 
NSNumber *priceNumberValue = [numberFormatter numberFromString:@"30.000,00"]; 

이것을 확인한 후 "fr-FR"로켈에 예상 한 속성이없는 것으로 보입니다. 그러나 "fr-BE"로켈은 잘 작동합니다.

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"fr_BE"]; 
[numberFormatter setLocale:locale]; 
[locale release]; 
[numberFormatter setUsesGroupingSeparator:YES]; 
NSNumber *priceNumberValue = [numberFormatter numberFromString:@"30.000,00"];