Преобразовать строку в формате валюты в обычную строку - PullRequest
4 голосов
/ 05 октября 2011

У меня есть одна строка с символом валюты и отформатированной валютой ... Я хочу преобразовать его в обычную строку ..

Мой код похож на это ..

-(NSString *)removeCurrency:(NSString *)str{


    NSNumberFormatter *_currencyFormatter = [[NSNumberFormatter alloc] init];
    [_currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
    [_currencyFormatter setNegativeFormat:@"-¤#,##0.00"];

    NSLog(@"\n With Currency : %@",str);
    NSLog(@"\n Without Currency : %@",[_currencyFormatter numberFromString:str]);

    return [NSString stringWithFormat:@"%@",[_currencyFormatter numberFromString:str]]; 
}

Но проблема в том, что когда я ввожу строку 0,009 русификации, она возвращает мне другие значения, но с другим числом она работает идеально ...

Ответы [ 4 ]

1 голос
/ 07 мая 2013

если вы установите валюту в соответствии с локалью, то вы можете удалить символ, используя текущую локаль, и получить строку

-(NSString *)removeCurrency:(NSString *)str{

    NSLocale *currentLocale = [NSLocale currentLocale];
    NSString *currency = [currentLocale objectForKey:NSLocaleCurrencySymbol];
    NSNumberFormatter *_currencyFormatter = [[NSNumberFormatter alloc] init];
    NSString *currencyCode=[currentLocale objectForKey:NSLocaleCurrencyCode];
    [_currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];

    [_currencyFormatter setCurrencyCode:currencyCode];
    [_currencyFormatter setLenient:YES];
    [_currencyFormatter setCurrencySymbol:currency];

    NSLog(@"\n Currency : %@",currency);
    NSLog(@"\n Without Currency : %@",[_currencyFormatter numberFromString:str]);
    NSLog(@"\n Without Currency : %f",[[_currencyFormatter numberFromString:str] floatValue]);
  //  NSLog(@"\n Without Currency : %.03f",[[_currencyFormatter numberFromString:currency]]);

    NSLog(@"\n With Currency : %@",str);
    NSLog(@"\n Without Currency : %@",[_currencyFormatter numberFromString:str]);

    return [NSString stringWithFormat:@"%@",[_currencyFormatter numberFromString:str]];
}
1 голос
/ 15 августа 2012

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

0 голосов
/ 22 января 2013

Вы говорите, что с "0,009 рупий" вы получаете другое значение.Это значение 0.008999999999999999, случайно?Если это так, вы на самом деле получаете правильный результат.Приведите это к неточности с плавающей точкой.

Вот код, который показывает это:

NSString* str = @"Rs 0.009";

NSNumberFormatter *_currencyFormatter = [[NSNumberFormatter alloc] init];
[_currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[_currencyFormatter setCurrencyCode:@"INR"];
[_currencyFormatter setLenient:YES];
[_currencyFormatter setCurrencySymbol:@"Rs"];

NSLog(@"\n With Currency : %@",str);
NSLog(@"\n Without Currency : %@",[_currencyFormatter numberFromString:str]);
NSLog(@"\n Without Currency : %f",[[_currencyFormatter numberFromString:str] floatValue]);
NSLog(@"\n Without Currency : %.03f",[[_currencyFormatter numberFromString:str] floatValue]);
0 голосов
/ 15 ноября 2011

Я бы просто все упростил.

    NSString *stringWithoutCurrency = [str stringByReplacingOccurrencesOfString:@"$"   withString:@""];

Из того, что я могу сказать, не существует эквивалента NSNumberFormatter для NSString, однако я могу ошибаться.

...