我有一个带有货币符号和货币格式的字符串... 我想把它转换成普通的字符串..
我的代码是这样的..
-(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]];
}
但问题是,当我输入字符串Rs 0.009时,它返回给我不同的值,但是使用另一个数字,它可以完美...
答案 0 :(得分:1)
为什么不在将货币格式添加到它之前存储该值。通常,您只在显示之前添加货币格式,而不是存储。
答案 1 :(得分:1)
如果按照区域设置设置货币,则可以使用当前区域设置删除符号并获取字符串
-(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]];
}
答案 2 :(得分:0)
我会保持简单。
NSString *stringWithoutCurrency = [str stringByReplacingOccurrencesOfString:@"$" withString:@""];
据我所知,NSString没有等效的NSNumberFormatter,但我可能错了。
答案 3 :(得分:0)
你说用“Rs 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]);