为了在UITextField
中编辑以组分隔的数字,分组分隔符需要在编辑时切换。否则返回的值(存储为NSNumber
值)是(NULL)由于错位的gouping分隔符(参见图片并想象该数字将被另一个数字扩展,例如扩展到“50.0000”)。
我怎样才能做到这一点?
现在,该值以-(void) textFieldDidEndEditing:(UITextField *)textField
方法处理。
(我的语言环境是德语,所以“。”是分组分隔符而不是小数分隔符!)但我尝试让代码适用于所有区域。
答案 0 :(得分: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]];
}
我希望这对你有所帮助。 Kevin MACHADO
答案 1 :(得分: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]];
}
答案 2 :(得分:0)
你可以在这里看到答案:
How to add commas to number every 3 digits in Objective C?
不要进行自己的数字格式化。你几乎肯定不会得到 所有边缘情况都正确或正确处理所有可能的区域设置。使用 用于将数值数据格式化为本地化的NSNumberFormatter 字符串表示。
您将使用NSNumberFormatter实例方法 -setGroupingSeparator:将分组分隔符设置为@“。” (或更好的[[NSLocale currentLocale] objectForKey:NSLocaleGroupingSeparator];谢谢@ntesler)和 -setGroupingSize:每3位数放一个分组分隔符。
++, Kevin MACHADO