假设我有一个整数,例如2,734,465,它被称为intOne。如何“拆分”整数,以便我可以将数字放在7个UILabels中?所以,在第一个标签中我将有2个,然后在第二个标签中我将有7个,依此类推。我该怎么做?谢谢你的帮助!
答案 0 :(得分:4)
使用
之类的东西将其转换为字符串NSString *intString = [NSString stringWithFormat:@"%d", myInt];
然后你可以把个别角色拿出来:
myChar = [intString characterAtIndex: i];
答案 1 :(得分:2)
获得字符串后,您也可以使用:
NSString *keyStr = [intString substringWithRange:NSMakeRange (i, j)];
直接获取子字符串
作为字符串操作的替代方法,您可以通过数学方式将数字n分开:
int n = 1357246;
int digit;
int divisor;
for (int i = log10(n); i> 0; i--) {
divisor = pow(10,i);
digit = n / divisor;
n = n - digit*divisor;
NSLog(@"%i ",digit);
}
NSLog(@"%i ",n);
答案 2 :(得分:2)
这是一种不同的方法。这将创建一个数组,其元素是单个数字(前面的“ - ”如果是负数):
#import <Foundation/Foundation.h>
NSArray* brokenArrayWithInt(NSInteger intOne) {
NSMutableArray *result = [[[NSMutableArray alloc] init] autorelease];
BOOL isNegative = NO;
if (intOne < 0) {
isNegative = YES;
intOne = -intOne;
}
do {
[result insertObject:[NSNumber numberWithInteger:intOne % 10] atIndex:0];
intOne /= 10;
} while (intOne > 0);
if (isNegative) {
[result insertObject:@"-" atIndex:0];
}
return result;
}
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSArray *brokenArray = brokenArrayWithInt(2734465);
NSLog(@"Array: %@", brokenArray);
brokenArray = brokenArrayWithInt(-2734465);
NSLog(@"Array: %@", brokenArray);
brokenArray = brokenArrayWithInt(0);
NSLog(@"Array: %@", brokenArray);
[pool drain];
return 0;
}
结果如下:
Running…
2011-09-21 12:28:52.531 so7505138[6739:a0f] Array: (
2,
7,
3,
4,
4,
6,
5
)
2011-09-21 12:28:52.533 so7505138[6739:a0f] Array: (
"-",
2,
7,
3,
4,
4,
6,
5
)
2011-09-21 12:28:52.533 so7505138[6739:a0f] Array: (
0
)
答案 3 :(得分:0)
这取决于您是否希望该号码选择相关的区域设置特定格式,例如:千位分隔符和小数点。如果你这样做,那么把它变成一个字符串,然后像其他人建议的那样提取字符。
如果你想获得每个十进制数字的值,那么你可以从模数10,100,1000等开始,从小于总值的10的幂开始(例如,对于213,从100开始,然后是10) ,然后1)
答案 4 :(得分:-1)
将整数转换为字符串 - 然后使用方法将字符串拆分/子串为7个字符串。或者您需要的金额。在每个标签中放一个字符串。
从[NSString stringWithFormat:@"%d", myNum];