当每次有三位数字添加到iOS中的文本字段中时,插入逗号作为整数

问题描述:

我需要将逗号分隔为三位数字而不用空格,并且如果总位数小于三位,则不会添加逗号。当每次有三位数字添加到iOS中的文本字段中时,插入逗号作为整数

例如:

2984 => 2,984 
297312984 => 297,312,984 
298 => 298 

如何解决这个问题?

尝试这样:

if([textfield.text length] > 3) 
{ 
NSMutableString *stringtext = [NSMutableString stringWithString:textfield.text]; 
[stringtext insertString:@"," atIndex:0]; 
} 

阿布特启动后,开始想如果有一个更好的解决办法?这是因为会有很多if-else语句。

欢迎来到任何建议。

+2

,你或许应该改一下你的问题,并要求在文本字段中的输入动态更新,将为您插入数千组分隔符。对于那个NSNumberFormatter是不错的选择。 – svena 2013-04-05 07:15:41

这是我已经拿出了:只需设置相应的文本字段的委托,并实现以下方法:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    if (textField.text.length % 4 == 3) { 
     if (string.length != 0) { 
      textField.text = [NSString stringWithFormat:@"%@,%@", textField.text, string]; 
      return NO; 
     } 
    } 

    return YES; 
} 
+0

是在旅途中,这是更简单和直接。 – 2013-04-05 06:58:19

+0

@AnoopVaidya谢谢,这就是我的想法。 – 2013-04-05 06:59:13

+0

这是你和我之间的差异,如果我假设并解决,我至少得到三分。 hahaa。但对于你总是+5。 :D – 2013-04-05 07:00:53

使用NSNumberFormatter,

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

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

[formatter release]; 

使用NSNumberFormatter

NSNumberFormatter *numberFormatter = [NSNumberFormatter new]; 
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
NSString *commaString = [numberFormatter stringFromNumber:[NSNumber numberWithInteger:yourIntegerValue]]; 
NSLog(@"---> %@",commaString); 

或者通过字符串操作<This is not the best way>

NSMutableString *mutString=[NSMutableString stringWithString:@"123456789"]; 

NSMutableArray *array=[NSMutableArray new]; 
for (NSInteger i=1; i<=mutString.length/3; i++) { 
    NSInteger index=[mutString length]-i*3; 
    [array insertObject:[mutString substringWithRange:NSMakeRange(index, 3)] atIndex:0]; 
} 
if (mutString.length!=mutString.length/3*3) { 
    [array insertObject:[mutString substringWithRange:NSMakeRange(0, mutString.length%3)] atIndex:0]; 
} 
NSString *commaString=[array componentsJoinedByString:@","]; 
NSLog(@"--> %@",commaString); 
+0

不好意思,但不是要求文本字段中的文本实时更新吗? – 2013-04-05 06:53:12

+0

我不知道,即使在没有提及的问题中。 – 2013-04-05 06:57:48

+1

对,我只是从目标对象中推导出来的是一个文本字段......无论如何;) – 2013-04-05 06:59:48

请如果你想兑现现场试试这个下面的函数

//------------------------------------------------------------------------ 
    // Method : ChangeNumberIntoCommaSeparatedStringDec 
    // Method to convert number into comma separated string 
    //------------------------------------------------------------------------ 
    -(NSString *)ChangeNumberIntoCommaSeparatedStringDec:(double)num 
    { 

      NSNumber *number = [NSNumber numberWithDouble:num]; 
      NSNumberFormatter *frmtr = [[NSNumberFormatter alloc] init]; 
      //here locale as applied to do not change the formatter values after changing the device locale 
      [frmtr setLocale:[[NSLocale alloc]initWithLocaleIdentifier:@"en_US"]]; 
      [frmtr setGroupingSize:3]; 
      [frmtr setGroupingSeparator:@","]; 
      [frmtr setUsesGroupingSeparator:YES]; 
      [frmtr setMaximumFractionDigits:2]; 
      [frmtr setMinimumFractionDigits:2]; 
      NSString *str=[frmtr stringFromNumber:number]; 
      [frmtr release]; 
      return(str);   
    }