0

为了在UITextField分组分隔符中编辑分组分隔的数字,需要在编辑时切换。否则返回的值(存储为NSNumber值)是(NULL),由于错位的组合分隔符(参见图片并想象该数字将扩展另一个数字,例如“50.0000”)。

我怎样才能做到这一点?

在此处输入图像描述

现在该值在-(void) textFieldDidEndEditing:(UITextField *)textField方法中处理。

(我的语言环境是德语,所以“。”是分组分隔符而不是小数分隔符!)但我试图让代码适用于所有地区。

4

3 回答 3

1

试试这个解决方案:

-(void) textFieldDidEndEditing:(UITextField *)textField {

 NSString *stringWithoutDots = [textField.text stringByReplacingOccurrencesOfString:@"." withString:@""]; //remove dots

int number = [stringWithoutDots intValue]; //convert into int

NSNumberFormatter *formatter = [NSNumberFormatter new];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle]; // this line is important!

NSString *formatted = [formatter stringFromNumber:[NSNumber numberWithInteger:number]];



}

我希望这对你有帮助。凯文·马查多

于 2013-06-28T10:03:43.107 回答
1

感谢thedjnivek和他的第二个建议。我不得不稍微调整一下,现在它就像一个魅力。仅针对所有具有相同问题的人,我的最终代码:

-(void) textFieldDidEndEditing:(UITextField *)textField
{

NSMutableString* mstring = [[textField text] mutableCopy];

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc]init];
[numberFormatter setLocale:[NSLocale currentLocale]];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];

NSString* localeSeparator = [[NSLocale currentLocale]
                             objectForKey:NSLocaleGroupingSeparator];
NSNumber* number = [numberFormatter numberFromString:[mstring
                stringByReplacingOccurrencesOfString:localeSeparator withString:@""]];

    [textField setText:[numberFormatter stringFromNumber:number]];        
}
于 2013-07-02T18:39:05.830 回答
0

你可以在这里看到答案:

如何在Objective C中每3位数字添加逗号?

不要做自己的数字格式。您几乎肯定不会正确处理所有边缘情况或正确处理所有可能的语言环境。使用 NSNumberFormatter 将数字数据格式化为本地化的字符串表示。

您将使用 NSNumberFormatter 实例方法 -setGroupingSeparator: 将分组分隔符设置为 @"。" (或者更好的是 [[NSLocale currentLocale] objectForKey:NSLocaleGroupingSeparator];感谢@ntesler)和 -setGroupingSize: 每 3 位数放置一个分组分隔符。

++,凯文·马查多

于 2013-06-28T08:16:10.673 回答