在iOS中格式化数字字符串表示形式的最佳方法是什么

时间:2013-06-22 15:16:56

标签: ios nsnumberformatter

在我写的iOS应用程序中,我收到一个带有价格字符串表示的json对象,如下所示:

{
  "price":"20000"
}

我想用逗号来格式化它以便于阅读,我找到了一种方法,但我觉得这是一个疯狂的笨重(我可能只是没有在谷歌中使用正确的术语)。< / p>

 NSNumberFormatter *formatter = [NSNumberFormatter new];
 [formatter setNumberStyle:NSNumberFormatterDecimalStyle];
 NSString price = [NSString stringWithFormat:@"$%@", [formatter stringFromNumber:[NSNumber numberWithInteger:[price intValue]]]];

要获得正确的格式,我似乎过于复杂

  1. 将NSString转换为int。
  2. 将int转换为NSNumber。
  3. 将NSNumber转换为NSString。
  4. 创建一个格式正确的新字符串(@ david / @ wain告诉我如何放弃这一步!)

2 个答案:

答案 0 :(得分:6)

货币的最佳选择是NSNumberFormatterCurrencyStyle

NSNumberFormatter *formatter = [NSNumberFormatter new];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
NSNumber *price = @([priceTextFromJSON doubleValue]);
NSString *priceText = [formatter stringFromNumber:price];

答案 1 :(得分:1)

你所拥有的一切都很好。

如果不是整数,您可以使用[NSDecimalNumber decimalNumberWithString:price]来更好地处理来源价格。

您可以使用[formatter setCurrencySymbol:@"$"]来处理符号,而不是stringWithFormat

这些更改将使您的实施更加强大和优雅。