2013/07/12更新

[XCODE] 数値を3桁区切りにフォーマットする

このエントリーをはてなブックマークに追加            

こんにちは、@yoheiMuneです。
今日はニッチなネタですが、Objective-Cで数値を3桁区切りにフォーマットする方法をブログに書きたいと思います。

画像


3000 => 3,000

まずは簡単なやつです。3000という整数値を3桁カンマ区切りにします。 この実装は以下のように簡単に行うことが出来ます。
// フォーマット前
NSString *integralPart = @"3000";

// フォーマット処理
NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];

// フォーマット後
NSString *formatString = [f stringFromNumber:[f numberFromString:integralPart]];
整数をフォーマットするには、NSNumberFormatterという便利なクラスを使えば簡単に出来てしまいます。



3000.92 => 3,000.92

こっちはちょっと面倒です。小数点以下もある場合には、自分である程度実装する必要があります。
// フォーマット対象の文字列
NSString *amount = @"3000.92";

// 整数部と小数部を分けて処理します
NSArray *strs = [amountString componentsSeparatedByString:@"."];

// 整数値は、NSNumberFormatを使います。
NSString *integralPart = [[strs objectAtIndex:0] stringByReplacingOccurrencesOfString:@"," withString:@""];
NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
integralPart = [f stringFromNumber:[f numberFromString:integralPart]];

// 小数部の表示部分を作成します。
NSString *decimalPart = nil;
if (strs.count > 1) {
    decimalPart = [strs objectAtIndex:1];
} else {
    decimalPart = 0;
}

// 整数部と小数部をマージします
NSString *formatedAmountString;
if (decimalPart) {
    formatedAmountString = [integralPart stringByAppendingFormat:@".%@", decimalPart];
} else {
    formatedAmountString = integralPart;
}
ちょっとだけ自分で実装する部分がありますが、こんな感じでフォーマット出来ます。



最後に

アプリケーションの表示部分は、整形処理とか色々と実装が面倒ですね。こんな感じでソースコードのスニペットを貯めていって、 コピペやリサイクルで対応をしていきたい限りです。

最後までご覧頂きましてありがとうございました。





こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。