[XCODE] 数値を3桁区切りにフォーマットする
こんにちは、@yoheiMuneです。
今日はニッチなネタですが、Objective-Cで数値を3桁区切りにフォーマットする方法をブログに書きたいと思います。
最後までご覧頂きましてありがとうございました。
今日はニッチなネタですが、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; }ちょっとだけ自分で実装する部分がありますが、こんな感じでフォーマット出来ます。
最後に
アプリケーションの表示部分は、整形処理とか色々と実装が面倒ですね。こんな感じでソースコードのスニペットを貯めていって、 コピペやリサイクルで対応をしていきたい限りです。最後までご覧頂きましてありがとうございました。