Кажется, что NSNumberFormatter не может анализировать евро (и, возможно, другие) валютные строки в числовом виде. Может кто-то, пожалуйста, докажите, что я неправ.
Я пытаюсь использовать следующее, чтобы получить числовую сумму из строки валюты:
NSNumberFormatter *currencyFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
NSNumber *currencyNumber = [currencyFormatter numberFromString:currencyString];
Это отлично подходит для суммы в валюте Великобритании и США. Он даже не имеет проблем с разделителями $и £ и тысяч без проблем.
Однако, когда я использую его с суммой валюты евро (с использованием формата Region, установленного во Франции или Германии в приложении настроек), он возвращает пустую строку. Все следующие строки терпят неудачу:
12,34 €
12,34
12.345,67 €
12.345,67
Стоит отметить, что эти строки соответствуют именно тому, что выходит из метода NSNumberFormatter stringFromNumber при использовании соответствующего языкового стандарта.
Настройка формата региона во Францию в приложении настроек, а затем установка значения currencyNumber в 12.34 в следующем коде, приводит к тому, что currencyString устанавливается в '12, 34 € ':
NSNumberFormatter *currencyFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
NSString *currencyString = [currencyFormatter stringFromNumber:currencyNumber];
Очевидно, было бы довольно легко взломать эту проблему специально для евро, но я надеюсь продать это приложение как можно большему числу стран, и я думаю, что подобная ситуация будет связана с другими локалями.
Есть ли у кого-нибудь ответ?
TIA, Duncan