在iOS中,每次文本字段中添加三位数字时,为整数插入逗号
我需要将逗号分隔的数字添加到三个数字中,不带空格,如果总数字小于三,则不添加逗号 例如:在iOS中,每次文本字段中添加三位数字时,为整数插入逗号,ios,objective-c,textfield,nsmutablestring,Ios,Objective C,Textfield,Nsmutablestring,我需要将逗号分隔的数字添加到三个数字中,不带空格,如果总数字小于三,则不添加逗号 例如: 2984 => 2,984 297312984 => 297,312,984 298 => 298 我如何解决这个问题 我试过这个: if([textfield.text length] > 3) { NSMutableString *stringtext = [NSMutableString stringWithString:textfield.text]; [stringt
2984 => 2,984
297312984 => 297,312,984
298 => 298
我如何解决这个问题
我试过这个:
if([textfield.text length] > 3)
{
NSMutableString *stringtext = [NSMutableString stringWithString:textfield.text];
[stringtext insertString:@"," atIndex:0];
}
Abt启动后,开始思考是否有更好的解决方案?这是因为会有很多if-else语句
欢迎提出任何建议。使用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);
或者通过字符串操作
:
NSMutableString*mutString=[nsmutablestringwithstring:@“123456789”];
NSMUTABLEARRY*数组=[NSMUTABLEARRY new];
对于(NSInteger i=1;i这就是我想到的:只需设置文本字段的委托,并相应地实现以下方法:
- (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;
}
请尝试以下功能
//------------------------------------------------------------------------
// 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);
}
对不起,但是文本字段中的文本不是实时更新的要求吗?我不知道,即使在问题中也没有提到。对,我只是从目标对象推断出一个文本字段…随便;)@AnoopVaidya谢谢,这是我的想法。这就是你和我之间的区别,如果我假设并解决,我至少得到3张反对票。哈哈。但对你来说永远是+5D@AnoopVaidya(你应该看到我在一些C++问题上被大量否决了)“Lakh谢谢:你会很快到达这里的:)Viely:我所有的时间DoWordPosits都显示了26,我想20的问题是。您可能应该重新表述您的问题,并要求即时更新textfield中的输入,以便为您插入数千个组分隔符。因此,NSNumberFormatter是一个不错的选择。
//------------------------------------------------------------------------
// 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);
}