NSNumberFormatter, как убрать пробелы в символе валюты - PullRequest
3 голосов
/ 13 апреля 2010

У меня есть некоторые значения, которые мне нужно отформатировать в строку валюты. Похоже, что при использовании NSNumberFormatter для форматирования суммы результирующая строка валюты будет содержать один или несколько пробелов.

Например, использование следующего фрагмента кода для форматирования @"1000" в формате европейской валюты приведет к возвращению @"1,000,00 €". Обратите внимание на пробел перед символом валюты.

NSNumberFormatter *tempNumberFormatter = [[NSNumberFormatter alloc] init];
 [tempNumberFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
 [tempNumberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
 [tempNumberFormatter setLocale:[NSLocale currentLocale]];
 [tempNumberFormatter setGeneratesDecimalNumbers:YES];
 [tempNumberFormatter setMaximumFractionDigits:2];
 [tempNumberFormatter setMinimumFractionDigits:2];
 [tempNumberFormatter setAlwaysShowsDecimalSeparator:YES];

 NSString *value = @"1000";

 NSNumber *number = [NSNumber numberWithFloat:[value doubleValue]];

 NSString *result = [tempNumberFormatter stringFromNumber:number];

 [tempNumberFormatter release];

 // result  = 1.000,00 € 

Сначала я решил решить эту проблему легко, просто отфильтровав пробелы в строке, но по какой-то причине это не работает, следующий фрагмент кода не выполняет то, что я ожидал:

[result replaceOccurrencesOfString:@" " withString:@"" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [result length])];

Есть ли способ использовать NSNumberFormatter для возврата отформатированной строки без пробелов в ней? (1.000,00€)

Ответы [ 2 ]

5 голосов
/ 19 июля 2011

Это старый вопрос, но я столкнулся с той же проблемой. Пробел, который использует NSNumberFormatter, не является стандартным пробелом, который вы указали в методе замены.

Это какой-то особенный персонаж. Вы можете получить его с помощью NSLog, затем скопировать это загадочное пространство из окна отладки и вставить в метод замены

formattedPrice = [formattedPrice stringByReplacingOccurrencesOfString:@" " withString:@""];

Копирование и вставка моей строки также должны делать (хотя не знаю, что браузер делает с ней ...)

0 голосов
/ 14 апреля 2010

Вы уверены, что место не соответствует вашей локали? Ваш пример кода дает мне «€ 1000,00», который является правильным форматом для моей локали (США).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...