我想在输入时在uitextfield中为每两个数字添加逗号,但我的代码不起作用,而且我不知道我在哪里犯了错误。
创意:当用户输入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;
}
当我输入时,数字总是在插入逗号之前显示3个字符,如1,23,44,567
有什么想法吗?
答案 0 :(得分:1)
好吧,似乎setGroupingSize中存在一个错误,要解决它,你应该改变
[formatter setGroupingSize:2]
到
[formatter setGroupingSize:1]
这解决了眼前的问题。但是您的代码中还存在其他一些问题。你想使用NumberWithDouble和doubleValue,还是应该使用整数?如何处理负数?有效输入的范围是多少?如果用户尝试编辑文本的中间部分会发生什么?当字符串长度为0时,为什么有不同的格式化程序?这真的是收集用户输入的最佳方式吗