iPhone: Как преобразовать строку с символом валюты в отрицательное число? - PullRequest
0 голосов
/ 27 сентября 2010

Скажем, у меня есть строка, которая составляет £ 23,56 или $ 23,56, как я могу преобразовать ее в -23,56?

У меня есть эта часть

NSMutableString *strAmount = [NSMutableString stringWithString:txtAmount.text];
[strAmount replaceCharactersInRange: [strAmount rangeOfString: strCurrencySymbol]  withString:@""];

Ответы [ 2 ]

0 голосов
/ 27 сентября 2010

Использование NSNumberFormatter

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[formatter setLenient:YES];

NSNumber *number = [formatter numberFromString:@"£23.56"];

NSDecimalNumber *minusOne = [NSDecimalNumber decimalNumberWithString:@"-1.00"];
NSDecimalNumber *money = [NSDecimalNumber decimalNumberWithDecimal:[number decimalValue]];
NSDecimalNumber *negativeMoney = [money decimalNumberByMultiplyingBy:minusOne];

NSLog(@"£23.56 is now %@", [negativeMoney description]);
0 голосов
/ 27 сентября 2010

Это выглядит как хорошее начало. Вы можете использовать rangeOfCharacterFromSet: вместо rangeOfString:, хотя после создания набора символов валюты. Ваш код может выглядеть так:

NSMutableString *strAmount = [NSMutableString stringWithString:txtAmount.text];
NSCharacterSet *currencySet = [NSCharacterSet characterSetWithCharactersInString:@"$€£"];
[strAmount replaceCharactersInRange: [strAmount rangeOfCharacterFromSet:currencySet]  withString:@"-"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...