当每次有三位数字添加到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语句。
欢迎来到任何建议。
这是我已经拿出了:只需设置相应的文本字段的委托,并实现以下方法:
- (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;
}
是在旅途中,这是更简单和直接。 – 2013-04-05 06:58:19
@AnoopVaidya谢谢,这就是我的想法。 – 2013-04-05 06:59:13
这是你和我之间的差异,如果我假设并解决,我至少得到三分。 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);
不好意思,但不是要求文本字段中的文本实时更新吗? – 2013-04-05 06:53:12
我不知道,即使在没有提及的问题中。 – 2013-04-05 06:57:48
对,我只是从目标对象中推导出来的是一个文本字段......无论如何;) – 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);
}
,你或许应该改一下你的问题,并要求在文本字段中的输入动态更新,将为您插入数千组分隔符。对于那个NSNumberFormatter是不错的选择。 – svena 2013-04-05 07:15:41