我有几个文本字段,用户输入一个数字,我用该数字进行各种计算。由于这些数字可能非常大,我觉得有些用户可能会在输入的值中放入分组分隔符(逗号,空格,小数)。
有没有一种方法可以检查用户是否在文本字段中放置了分组分隔符,然后删除该分组分隔符,以便将输入的值存储为NSNumber?
据我所知,NSNumberFormatter没有为此提供方法,我的所有解决方案似乎效率都很低。我想知道你们是否有任何好办法解决这个问题。
答案 0 :(得分:1)
NSNumberFormatter
确实提供了处理逗号,点和空格的方法,事实上,它做得非常好。试图猜测最佳格式的是“宽大”:
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setLenient:YES];
NSLog(@"%@", [formatter numberFromString:@"123,456.78"]);
NSLog(@"%@", [formatter numberFromString:@"123 456 78"]);
输出:
123456.78
12345678
它有效,但如果用户开始混合(例如123,456 789.105
),它就会失败。我个人会替换所有出现的空格,然后使用数字格式化器。
如果您担心效率,我需要通知您:不要。它只是一个文本输入,每次运行都会使用一次。如果你每次用户滚动某些内容或进行数千次计算时都这样做,那么你应该担心。
此外,如果用户要输入非常大的数字,您是否认为有更好的接口来处理?我不确定你是在写一个iOS或OSX应用程序,所以它取决于你。也许给他一套科学的符号按钮,在那里他可以选择数字和力量?
答案 1 :(得分:0)
您可以使用[myField.text stringByReplacingOccurrencesOfString:@" " withString:@""]
剥离分隔符
......等(或使用正则表达式)。
或者您可以通过指定数字键盘作为输入来阻止字段上的非数字输入。