在UITextfield中更改值时对分隔符进行分组

时间:2013-06-27 22:41:06

标签: ios uitextfield nsnumber

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

我怎样才能做到这一点?

enter image description here

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

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

3 个答案:

答案 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