2016-05-01 4 views
0

入力中にuitextfieldの2つの番号にコンマを挿入したいのですが、私のコードはうまくいかず、私は間違いがどこにあるのか分かりません。目的Cのテキストフィールドフォーマッタの2つのカンマすべて

アイデア:ユーザータイプが23456789の場合、入力中に23,45,67,89にフォーマットしてください。ここで

は私のコードです:

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init] ; 
if([string length]==0) 
{ 
    [formatter setGroupingSeparator:@"-"]; 
    [formatter setGroupingSize:4]; 
    [formatter setUsesGroupingSeparator:YES]; 
    [formatter setSecondaryGroupingSize:2]; 
    NSString *num = textField.text ; 
    num= [num stringByReplacingOccurrencesOfString:@"-" withString:@""]; 
    NSString *str = [formatter stringFromNumber:[NSNumber numberWithDouble:[num doubleValue]]]; 
    textField.text=str; 
    NSLog(@"%@",str); 
    return YES; 
} 
else { 
    [formatter setGroupingSeparator:@","]; 
    [formatter setGroupingSize:2]; 
    [formatter setUsesGroupingSeparator:YES]; 
    [formatter setSecondaryGroupingSize:2]; 
    NSString *num = textField.text ; 
    if(![num isEqualToString:@""]) 
    { 
     num= [num stringByReplacingOccurrencesOfString:@"," withString:@""]; 
     NSString *str = [formatter stringFromNumber:[NSNumber numberWithDouble:[num doubleValue]]]; 
     textField.text=str; 
    } 

    //NSLog(@"%@",str); 
    return YES; 
} 

私が入力すると、番号は常にこの1,23,44,567

任意のアイデア状挿入コンマの前に3文字を表示しますか?そこsetGroupingSizeのバグだ、とあなたはすぐに問題を解決

[formatter setGroupingSize:2] 

[formatter setGroupingSize:1] 

を変更する必要があり、それを回避するかのように

+1

この方法はどこですか? 'string'とは何ですか?このコードを含むメソッド全体を表示して、質問を更新してください。 – rmaddy

答えて

1

まあ、それが表示されます。しかし、あなたのコードには他にもいくつかの問題があります。 NumberWithDoubleとdoubleValueを使用するか、整数を使用する必要がありますか?負の数値はどのように処理されますか?有効な入力の範囲は何ですか?ユーザーがテキストの途中で編集しようとするとどうなりますか?文字列の長さが0のときに異なるフォーマッタがあるのはなぜですか?これは本当にユーザーからの入力を収集する最良の方法ですか?

関連する問題