如果我有这个:
int toSplit = 208;
拆分它的最佳方法是什么,所以我得到:
2
0
8
方法是这样的
- (NSMutableArray *) toCharArray : (NSString *) str
{
NSMutableArray *characters = [[NSMutableArray alloc] initWithCapacity:[str length]];
for (int i=0; i < [str length]; i++)
{
NSString *ichar = [NSString stringWithFormat:@"%c", [str characterAtIndex:i]];
[characters addObject:ichar];
}
return characters;
}
do {
int digit = toSplit % 10;
toSplit /= 10;
printf(@"%i", digit);
} while (toSplit > 0);
我希望这不是家庭作业。
编辑:它是倒退的,所以它不是一个有效的答案......但是,把它留在这里,因为它仍然对其他人有用。
把它整理成一个字符串,然后把它拉开。所以像这样:
int toSplit = 208;
NSString *string = [NSString stringWithFormat: @"%i", toSplit];
NSMutableString *splitApartString = [[NSMutableString alloc] init];
for (int i = 0; i < [string length]; i++) {
NSString *substring = [string substringFromIndex: i];
[splitApartString appendFormat: @"%@\n", substring];
}
NSLog(@"%@", splitApartString); //YAY!
所以它的作用是将这个 int 放入一个字符串中,将其拆分,然后遍历每个字符并从该字符中获取一个字符串。然后它将该子字符串附加到一个新字符串。
另一种选择是获取字符并使用运算符而不是获取子字符串%c
。此外,如果您查看此代码,您将看到以下输出:
> 2
> 0
> 8
> // extra space here
您可以只添加一个条件来检查i
字符串长度是否为 - 1 而不添加空格,或者您可以只删除最后一个字符!
我不熟悉 Objective-C 语法,但类似:
void split(int toSplit)
{
if (!toSplit)
{
return;
}
split(toSplit / 10);
int digit = toSplit % 10;
printf(@"%i", digit);
}