2011-04-08 20 views

回答

0

如果你已經使用了NSNumberFormatter格式化文本字符串,您可以使用相同的格式解析文本字符串回一個數字。

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

NSNumber *rupees = [NSNUmber numberWithFloat:10500.50]; 

NSString *formattedRupees = [formatter stringFromNumber:rupees]; 

NSNumber *rupeesFromString = [formatter numberFromString:formattedRupees]; 

[formatter release]; 

如果您不使用NSNumberFormatter,則可以嘗試使用NSScanner手動解析字符串。

+0

對不起,遲到的答覆。但我想轉換10,500.00到10500.00。所以我可以在計算中使用。 plz建議我儘快。 thx – 2011-04-28 12:00:18

+0

NSNumber * rupeesFromString = [formatter numberFromString:formattedRupees];從上面。 – 2011-04-28 13:43:20

0

小心浮數!

使用NSNumber *rupees = [NSNUmber numberWithFloat:10500.50];可能會導致轉換中出現精確問題。該「10500.50f」號可以工作,但如果你嘗試像25.63f,這可能會發生:

rupees = 25.629999 

這就是爲什麼使用貨幣和雙精度浮點數,不推薦。

移動到你的問題:

你可以做這樣的事情:

NSString *string = @"Rs 10,500.50"; 
string = [string stringByReplacingOccurrencesOfString:@"," withString:@""]; 
string = [string stringByReplacingOccurrencesOfString:@"Rs " withString:@""]; 

NSArray *valueArray = [string componentsSeparatedByString:@"."]; 
NSInteger firstNumber = [[valueArray firstObject] intValue]; 
NSInteger secondNumber = [[valueArray lastObject] intValue]; 

然後你就可以使用這兩個值(firstNumbersecondNumber