NSNumberFormatter,如何删除货币符号中的空格

Oys*_*sio 3 iphone cocoa cocoa-touch objective-c

我有一些值,我需要格式化为货币字符串.似乎在使用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 € 
Run Code Online (Sandbox Code Playgroud)

我首先考虑通过过滤字符串中的空格来轻松解决这个问题,但由于某些原因这不起作用,下面的代码片段没有按照我的预期进行:

[result replaceOccurrencesOfString:@" " withString:@"" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [result length])];
Run Code Online (Sandbox Code Playgroud)

有没有办法使用NSNumberFormatter返回没有空格空格的格式化字符串?(1.000,00€)

Joh*_*yne 5

这是一个老问题,但我遇到了同样的问题.NSNumberFormatter使用的空格字符不是您在replace方法中提供的标准空间.

这是一种特殊的性格.您可以使用NSLog检索它,然后从调试窗口复制该神秘空间并将其粘贴到您的replace方法中

formattedPrice = [formattedPrice stringByReplacingOccurrencesOfString:@" " withString:@""];
Run Code Online (Sandbox Code Playgroud)

复制并粘贴我的行也应该这样做(不知道浏览器用它做了什么......)


Pet*_*sey 0

您确定该空间不适合您的区域设置吗?您的示例代码为我提供了 \xe2\x80\x9c\xe2\x82\xac1,000.00\xe2\x80\x9d,这是我的语言环境(美国)的正确格式。

\n