在iPhone编程中从字符串中获取数字

时间:2011-09-26 13:41:15

标签: iphone objective-c cocoa-touch

我有一个字符串。它总是3个字母长,它可以指望只包含三个整数。说它看起来像这样:

NSString * numberString = @"123";

现在,我想从中提取这些数字。在任何其他语言中,我只需获取每个位置的角色并解析它,甚至投射它。

但是,Objective-C似乎没有。我找到了一些其他的答案,建议我使用characterAtIndex方法,在其上使用numberWithChar,然后从中减去数字“48”,甚至让我自己也不知道它的明显愚蠢

没有其他更优雅的方法吗?

我尝试使用substringWithRange,但显然没有创建NSRange的方法,并且由于某种原因它与CFRangeMake不兼容。

4 个答案:

答案 0 :(得分:7)

[[numberString substringWithRange:NSMakeRange(0,1)] intValue]怎么样?

答案 1 :(得分:1)

int n=[@"123" intValue];

通过此,您可以获得n / 100,n / 10和n%10的个别数字。

答案 2 :(得分:0)

这个怎么样?

NSString * numberString = @"123";
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
NSNumber *number = [formatter numberFromString:numberString];
int n = [number intValue];

(完成转换后不要忘记发布格式化程序。)

答案 3 :(得分:0)

NSString *numberString = @"123";
int firstDigit  = [numberString characterAtIndex:0] - '0';
int secondDigit = [numberString characterAtIndex:1] - '0';
int thirdDigit  = [numberString characterAtIndex:2] - '0';
NSLog(@"Your digits are %d, %d, %d", firstDigit, secondDigit, thirdDigit);

如果你想作弊:

char *numberString = [@"123" cStringUsingEncoding:NSASCIIStringEncoding];
printf(@"Your digits are %d, %d, %d\n", numberString[0] - '0',
                                        numberString[1] - '0',
                                        numberString[2] - '0');