1

文字列の長さで for ループを実行しています。最初のループは、2 番目のループで共通の文字を探します。配列や文字列に共通するnameStringのインデックスを保存したい。助けてください。コードは後述します。

for (int i=0; i < nameString.length; i++) {

        char currentLetter = [nameString characterAtIndex:i];

    for (int j=0; j < partnersNameString.length; j++) {
        if (currentLetter == [partnersNameString characterAtIndex:j]) {

            NSRange range;
            range.length=1;
            range.location=j;
           [partnersNameString replaceCharactersInRange:range withString:@""];
            calculateField.text = partnersNameString;
        }
      }
    }
4

3 に答える 3

1

探していることを実行するには、いくつかの方法があります。「プレーンな」C 配列をカウントとともに使用するかNSMutableArray、ラッパーとともに を使用することができます。

最初の方法は次のようになります。

NSUInteger indexes[MAX_LENGTH];
NSUInteger lastIndex = 0;
for (int i=0; i < nameString.length; i++) {
    char currentLetter = [nameString characterAtIndex:i];
    for (int j=0; j < partnersNameString.length; j++) {
        if (currentLetter == [partnersNameString characterAtIndex:j]) {
            indexes[lastIndex++] = i;
            // Go through the rest of your code
            ...
        }
    }
}
for (NSUInteger i = 0 ; i != lastIndex ; i++) {
    NSLog(@"Found match at index %u", indexes[i]);
}

2 番目の方法は似ていますが、NSNumberに入るデータをラップするために を使用する必要がありNSMutableArrayます。

NSMutableArray *indexes = [NSMutableArray array];
for (int i=0; i < nameString.length; i++) {
    char currentLetter = [nameString characterAtIndex:i];
    for (int j=0; j < partnersNameString.length; j++) {
        if (currentLetter == [partnersNameString characterAtIndex:j]) {
            [indexes addObject[NSNumber numberWithInt:i]];
            // Go through the rest of your code
            ...
        }
    }
}
for (NSNumber in indexes) {
   NSLog(@"Found match at index %i", [[indexes objectAtIndex:i] intValue]);
}
于 2012-11-23T12:40:58.053 に答える
1

そのために NSMutablearray を使用できます

NSMutableArray myArray = [NSMutableArray new];
for (int i=0; i < nameString.length; i++) {

        char currentLetter = [nameString characterAtIndex:i];

    for (int j=0; j < partnersNameString.length; j++) {
        if (currentLetter == [partnersNameString characterAtIndex:j]) {
            //And add it here
            [myArray addObject:currentLetter];
            NSRange range;
            range.length=1;
            range.location=j;
           [partnersNameString replaceCharactersInRange:range withString:@""];
            calculateField.text = partnersNameString;
        }
      }
    }
于 2012-11-23T12:31:00.657 に答える
1
[myArray addObject:[NSNumber numberWithInt:i]];
于 2012-11-23T12:41:52.833 に答える