我有一些我需要格式化为货币字符串的值。似乎在使用NSNumberFormatter格式化金额时,生成的货币字符串将包含一个或多个空格。
例如,使用以下代码将@"1000"
格式化为欧洲货币格式将导致返回@"1,000,00 €"
。请注意货币符号前的空白区域。
NSNumberFormatter *tempNumberFormatter = [[NSNumberFormatter alloc] init];
[tempNumberFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[tempNumberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[tempNumberFormatter setLocale:[NSLocale currentLocale]];
[tempNumberFormatter setGeneratesDecimalNumbers:YES];
[tempNumberFormatter setMaximumFractionDigits:2];
[tempNumberFormatter setMinimumFractionDigits:2];
[tempNumberFormatter setAlwaysShowsDecimalSeparator:YES];
NSString *value = @"1000";
NSNumber *number = [NSNumber numberWithFloat:[value doubleValue]];
NSString *result = [tempNumberFormatter stringFromNumber:number];
[tempNumberFormatter release];
// result = 1.000,00 €
我首先考虑通过过滤字符串中的空格来轻松解决这个问题,但由于某些原因这不起作用,下面的代码片段没有按照我的预期进行:
[result replaceOccurrencesOfString:@" " withString:@"" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [result length])];
有没有办法使用NSNumberFormatter返回没有blanc空格的格式化字符串? (1.000,00€
)
答案 0 :(得分:5)
这是一个老问题,但我遇到了同样的问题。 NSNumberFormatter使用的空格字符不是您在替换方法中提供的标准空间。
这是一种特殊的性格。您可以使用NSLog检索它,然后从调试窗口复制该神秘空间并将其粘贴到您的替换方法
formattedPrice = [formattedPrice stringByReplacingOccurrencesOfString:@" " withString:@""];
复制并粘贴我的行也应该这样做(不知道浏览器用它做了什么......)
答案 1 :(得分:0)
您确定您的区域设置的空间不正确吗?您的示例代码为我提供了“€1,000.00”,这是我的语言环境(美国)的正确格式。