разобрать номер из конкретной строки локали? - PullRequest
2 голосов
/ 21 декабря 2009

Мне нужно получить номер из строки во французском стиле: @ "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 @ "30.000,00"?

1 Ответ

3 голосов
/ 21 декабря 2009

Настройка языкового стандарта должна работать, но вам нужно указать формататору чисел использовать разделитель группировки:

[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"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...