我想知道使用Cocoa Touch在ObjectiveC中从double中提取数字的最优雅方法是什么(这需要在iPhone上运行):
假设你有一个双倍:1.423
你如何得到每个“1”,“4”,“2”,“3”,组成几个变量的双倍?
最后我想得到类似的东西:
NSLog(@"here are the digits : %d , %d %d %d ", one, two, three, four);
一个变量应为1
两个变量应该是4
三个变量应为2
四个变量应为3
使用ObjectiveC / cocoa Touch以不错的方式实现这一目标的任何建议?
感谢。
答案 0 :(得分:3)
这是我真正快速为你鞭打的东西。
@interface NSNumber (DigitParsing)
- (NSArray *)arrayOfStringDigits;
@end
@implementation NSNumber (DigitParsing)
- (NSArray *)arrayOfStringDigits {
NSString *stringNumber = [self stringValue];
NSMutableArray *digits = [NSMutableArray arrayWithCapacity:[stringNumber length]];
const char *cstring = [stringNumber cStringUsingEncoding:NSASCIIStringEncoding];
while (*cstring) {
if (isdigit(*cstring)) {
[digits addObject:[NSString stringWithFormat:@"%c", *cstring]];
}
cstring++;
}
return digits;
}
@end
然后在您的代码中,执行以下操作:
NSArray *myDigits = [[NSNumber numberWithDouble:1.423] arrayOfStringDigits];
NSLog(@"Array => %@", myDigits);
NSLog(@"here are the digits : %@ , %@ %@ %@ ",
[myDigits objectAtIndex:0],
[myDigits objectAtIndex:1],
[myDigits objectAtIndex:2],
[myDigits objectAtIndex:3]);
答案 1 :(得分:0)
我将其转换为字符串(使用+[NSString stringWithFormat:]
),然后使用rangeOfCharactersInSet:
或NSScanner
扫描数字。