0

私は NSNumberFormatter の NSNumberFormatterSpellOutStyle を認識していますが、それは不適切な形式の数値を返します: 932 は、「932」ではなく「932」を返します。

別の質問で、 デイブ・デロングは、同じコードに対して「932」を得たと述べました。これはまさに私が望んでいるものです。「and」という言葉 (またはローカライズされた場合は何でも) は、大きな数を区切るために使用されます。これは可能ですか?

4

1 に答える 1

3

「and」を追加したいだけの場合は、手動で行う必要があると思います(参照した質問に回答してから動作が変更されたか、回答のタイプミスでした)。私はあなたがこの方法でそれを行うことができると思います、しかし私はあなたがそれを望むすべての状況でこれがうまくいくかどうかわかりません:

    int num = 932;
    int leftNum = floor(num/100) * 100;
    int rightNum = num % 100;
    NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
    [f setNumberStyle:NSNumberFormatterSpellOutStyle];
    NSString *combo;
    if (num > 100) {
        NSString *l = [f stringFromNumber:[NSNumber numberWithInt:leftNum]];
        NSString *r = [f stringFromNumber:[NSNumber numberWithInt:rightNum]];
        combo = [NSString stringWithFormat:@"%@ and %@",l,r];
    }else{
        combo = [f stringFromNumber:[NSNumber numberWithInt:num]];
    }
    NSLog(@"%@", combo);
于 2012-09-03T16:46:28.093 に答える