2009-12-21 3 views
2

я должен получить номер строки из Франции номер стиля: @ «30.000,00» Когда я использую NSNumberFormattern разобратьномер синтаксического анализа из определенной строки в локали?

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

Он вернулся 30, мой ожидаемый доход 30000 Я пытаюсь использовать другие варианты

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

или

[numberFormatter setDecimalSeparator:@","]; 

, но она по-прежнему возвращает неожиданное значение: 30

Каков правильный способ рассказать о NSNumberFormatter parse @ "30.000,00"?

ответ

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"]; 
Смежные вопросы