我有一个类似NSString *str = @"123"
的字符串。我想把这个字符串的数字填充到UIPickerView中。但是如何从这个字符串中获取数字呢?我添加了以下代码
- (void)pickerView:(UIPickerView *)pickerView didSelectRow: (NSInteger)row inComponent:(NSInteger)component
{
int number = [str intValue];
if(component == 0)
{
}
else if(component == 1)
{
}
else
{
}
}
请查看。。
NSMutableArray *arrNumbers = [[NSMutableArray] alloc] initWithCapacity:[YOURSTRING length]];
for (i=0;i<[YOURSTRING length];i++)
{
unichaar ch = [YOURSTRING characterAtIndex:i];
NSLog(@"Processing charachter %c",ch);
// If you really want
[arrNumbers addObject:(id)ch];
}
考虑到NSString已经是一个字符数组,其他解决方案似乎太多了。更轻量级的解决方案:
NSString *str = @"123";
for (int i = 0; i < [str length]; i++) {
int digit = [str characterAtIndex:i] - '0';
// do something with your digit
}
如果你把它作为一个字符串,你就可以进行
NSArray * digitStrings = [str componentsSeparatedByString:""];
数组中的每个元素都是一个数字,作为一个NSString。
未测试,但您可以尝试一下,这应该扫描字符串中的所有数字项。
-(NSArray*)getDigitsFromString:(NSString*)str{
NSMutableString *outpuString = [NSMutableString
stringWithCapacity:str.length];
NSScanner *scanner = [NSScanner scannerWithString:str];
NSCharacterSet *numbers = [NSCharacterSet
characterSetWithCharactersInString:@"0123456789"];
while ([scanner isAtEnd] == NO) {
NSString *buffer;
if ([scanner scanCharactersFromSet:numbers intoString:&buffer]) {
[outpuString appendString:buffer];
} else {
[scanner setScanLocation:([scanner scanLocation] + 1)];
}
}
NSArray * digitStr = [outpuString componentsSeparatedByString:@""];
return digitStr;
}
NSMutableArray * digit=[[NSMutableArray alloc]init];
NSString *string = @"123456";
for (int i=0;i<[string length]; i++) {
NSString * newString = [string substringWithRange:NSMakeRange(i, 1)];
[digit addObject:newString];
}
NSLog(@"String %@ ", digit)
还有一个答案,它通过解决将int分隔成数字的问题,更多地解决了原始问题的想法:
NSString *numberString = @"68243";
int result[numberString.length];
NSInteger number = [numberString integerValue];
int j = numberString.length - 1;
while (j >= 0)
{
int power = pow(10, j);
int rest = (number % power);
result[j] = (number - rest)/power;
number = rest;
j--;
}