У меня есть значение NSString @ "78000". Как я могу получить это в формате валюты, т.е. 78 000 долларов, оставаясь NSString.
Самый простой способ конвертировать NSString в его эквивалент валюты в Cocoa
Ответ 1
Вам нужно использовать форматирование чисел. Обратите внимание, что это также то, как вы отображаете даты/время и т.д. В правильном формате для локали пользователей
// alloc formatter
NSNumberFormatter *currencyStyle = [[NSNumberFormatter alloc] init];
// set options.
[currencyStyle setFormatterBehavior:NSNumberFormatterBehavior10_4];
[currencyStyle setNumberStyle:NSNumberFormatterCurrencyStyle];
NSNumber *amount = [NSNumber numberWithInteger:78000];
// get formatted string
NSString* formatted = [currencyStyle stringFromNumber:amount]
[currencyStyle release];
Ответ 2
Десятичные/центы в конце можно контролировать следующим образом:
[currencyStyle setMaximumFractionDigits:0];
Здесь ссылка на документацию из apple
Ответ 3
Ответ выше будет преобразовывать число, но вот метод фактического преобразования формата NSString в формат валюты
- (NSString*) formatCurrencyWithString: (NSString *) string
{
// alloc formatter
NSNumberFormatter *currencyStyle = [[NSNumberFormatter alloc] init];
// set options.
[currencyStyle setFormatterBehavior:NSNumberFormatterBehavior10_4];
// reset style to no style for converting string to number.
[currencyStyle setNumberStyle:NSNumberFormatterNoStyle];
//create number from string
NSNumber * balance = [currencyStyle numberFromString:string];
//now set to currency format
[currencyStyle setNumberStyle:NSNumberFormatterCurrencyStyle];
// get formatted string
NSString* formatted = [currencyStyle stringFromNumber:balance];
//release
[currencyStyle release];
//return formatted string
return formatted;
}