2010-09-27 113 views
0

说我有一个字符串是23.56英镑或23.56美元,我怎么能把它转换成-23.56?iPhone:如何将货币符号的字符串转换为负数?

我有这部分

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

回答

0

这看起来像一个良好的开端。尽管创建了一组货币符号后,您可以使用rangeOfCharacterFromSet:而不是rangeOfString:。您的代码看起来是这样的:

NSMutableString *strAmount = [NSMutableString stringWithString:txtAmount.text]; 
NSCharacterSet *currencySet = [NSCharacterSet characterSetWithCharactersInString:@"$€£"]; 
[strAmount replaceCharactersInRange: [strAmount rangeOfCharacterFromSet:currencySet] withString:@"-"]; 
0

使用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

我收到上一个警告... 警告: 'NSDecimalNumber' 不能为 '-descriptionWithLocale' 回应还有一个错误 - [NSDecimalNumber descriptionWithLocale]:无法识别的选择器发送到实例0x595cde0 ***终止应用程序由于未捕获的异常'NSInvalidArgumentException',原因:' - [NSDecimalNumber descriptionWithLocale]:无法识别的选择器发送到实例0x595cde 0' 终止在抛出'NSException'的实例后调用 – Jules 2010-09-28 09:11:58

+0

抱歉。最后一条语句更新为只使用'description' – falconcreek 2010-09-28 11:16:26

相关问题