3

のような文字列があります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 
 {

 }
}
4

6 に答える 6

4

これを見てください..

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];
}
于 2012-08-22T11:57:27.637 に答える
4

NSString がすでに文字の配列であることを考えると、他の解決策は過剰に思えます。より軽量なソリューション:

NSString *str = @"123";
for (int i = 0; i < [str length]; i++) {
    int digit = [str characterAtIndex:i] - '0';
    // do something with your digit
}
于 2012-08-22T12:05:38.253 に答える
3

あなたがそれを文字列として持っているなら、あなたはただすることができます

NSArray * digitStrings = [str componentsSeparatedByString:""];

そして、配列内の各要素は NSString としての数字になります。

于 2012-08-22T11:55:15.113 に答える
2

テストされていませんが、試してみることができます。これは、文字列のすべての数値エントリをスキャンすることになっています。

-(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;
}
于 2012-08-22T12:01:27.550 に答える
0

intを数字に分割する問題を解決することにより、元の質問のアイデアにさらに対処するもう1つの回答:

  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--;
  }
于 2012-08-22T12:44:04.417 に答える
0
 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)
于 2012-08-22T12:16:45.413 に答える