我似乎找不到一个简单的方法来做到这一点。我需要的确切的东西是:
[NSString stringWithFormat:@"%d doodads", n];
其中 n 是一个整数。所以对于 1234 我想要这个字符串(在我的语言环境下):
@"1,234 doodads"
谢谢。
我似乎找不到一个简单的方法来做到这一点。我需要的确切的东西是:
[NSString stringWithFormat:@"%d doodads", n];
其中 n 是一个整数。所以对于 1234 我想要这个字符串(在我的语言环境下):
@"1,234 doodads"
谢谢。
对于 10.6 这有效:
NSNumberFormatter* numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setFormatterBehavior: NSNumberFormatterBehavior10_4];
[numberFormatter setNumberStyle: NSNumberFormatterDecimalStyle];
NSString *numberString = [numberFormatter stringFromNumber: [NSNumber numberWithInteger: i]];
它可以正确处理本地化。
我最近发现了这个单行:
[@1234567 descriptionWithLocale:[NSLocale currentLocale]]; // 1,234,567
或者在 Swift 2 中:
1234567.descriptionWithLocale(NSLocale.currentLocale()) // 1,234,567
斯威夫特 3/4:
(1234567 as NSNumber).description(withLocale: Locale.current)
根据问题格式化:
[@(n) descriptionWithLocale:[NSLocale currentLocale]];
没有 Objective-C 文字的格式化:
[[NSNumber numberWithInt:n] descriptionWithLocale:[NSLocale currentLocale]];
这是我问这个问题时正在寻找的解决方案。自 iOS 2.0 和 OS X 10.0 起可用,记录为返回根据提供的语言环境格式化的数字的字符串版本。stringValue
甚至记录使用此方法但通过nil
.
鉴于这是我的问题并且这最适合我的答案,我很想改变刻度,但这似乎很残酷。更新我改变了勾号,这个答案就是答案。
下面没有解决语言环境,但它是在数字格式化程序上设置千位分隔符的更好方法(在我看来)。
NSNumberFormatter *numberFormat = [[[NSNumberFormatter alloc] init] autorelease];
numberFormat.usesGroupingSeparator = YES;
numberFormat.groupingSeparator = @",";
numberFormat.groupingSize = 3;
Todd Ransom 完美地回答了这个问题。
我想补充一下(在单独的评论中,这样我可以展示一些格式很好的代码),如果您打算定期执行此操作,那么值得创建一个 NSString 帮助器类。
因此,为自己创建一个包含以下内容的 NSStringHelper.h:
#import <Foundation/Foundation.h>
@interface NSString (NSStringHelper)
+(NSString*)formatWithThousandSeparator:(NSInteger)number;
@end
..和一个包含以下内容的 NSStringHelper.m 文件:
#import "NSStringHelper.h"
@implementation NSString (NSStringHelper)
+(NSString*)formatWithThousandSeparator:(NSInteger)number
{
// Format a number with thousand seperators, eg: "12,345"
NSNumberFormatter* numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setFormatterBehavior: NSNumberFormatterBehavior10_4];
[numberFormatter setNumberStyle: NSNumberFormatterDecimalStyle];
NSString *result = [numberFormatter stringFromNumber:[NSNumber numberWithInteger:number]];
return result;
}
@end
这为您提供了在未来项目中重用此代码的完美方式。
#import "NSStringHelper.h"
NSInteger numOfUsers = 12345;
NSString* strNumberOfUsers = [NSString formatWithThousandSeparator:numOfUsers];
酷,嘿?
再次为重新发布 Todd 的答案道歉(这正是我想要的!),但这是解决问题的好方法,并准备好在您未来的 XCode 项目中使用。