29

私はそれを行う簡単な方法を見つけることができないようです。私が必要とする正確なものは次のとおりです。

[NSString stringWithFormat:@"%d doodads", n];

n は int です。したがって、1234 の場合、次の文字列が必要です (私のロケールの下で):

@"1,234 doodads"

ありがとう。

4

5 に答える 5

53

10.6の場合、これは機能します:

NSNumberFormatter* numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setFormatterBehavior: NSNumberFormatterBehavior10_4];
[numberFormatter setNumberStyle: NSNumberFormatterDecimalStyle];
NSString *numberString = [numberFormatter stringFromNumber: [NSNumber numberWithInteger: i]];

そして、ローカリゼーションを適切に処理します。

于 2010-10-16T14:02:02.550 に答える
26

以下はロケールに対応していませんが、(私の意見では) 数値フォーマッタで千単位の区切り記号を設定するより良い方法です。

NSNumberFormatter *numberFormat = [[[NSNumberFormatter alloc] init] autorelease];
numberFormat.usesGroupingSeparator = YES;
numberFormat.groupingSeparator = @",";
numberFormat.groupingSize = 3;   
于 2012-02-24T11:35:35.697 に答える
2

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 プロジェクトで使用できるようにするための優れた方法です。

于 2014-05-07T12:02:04.387 に答える
0

を使用しNSNumberFormatterます。

于 2009-11-17T21:24:56.850 に答える