0

私はこのコードを機能させようとしています。最初は名前、2番目は単語の2つの文字列配列を比較するので、最初の配列から単語を見つけて、2番目の配列のすべての単語と比較します。私は肯定的な結果を得て、私は単語を印刷します。ただし、意図したとおりには機能せず、名前の配列をすべて出力するだけです。このコードの何が問題になっていますか?たぶん、これを行うためのより効果的な方法がありますか?

for (NSString *n in names) {

        for (NSString *m in words) {
            if ([n caseInsensitiveCompare:m] == NSOrderedSame) {
                NSLog(@"%@", n);
            }

        }          
    }

別の方法を試しましたが、名前が次々と印刷され続けます。同じ結果を得るために単語を名前に交換しようとしました。お互いを比較するのに何か問題があります。

  for (NSString *n in names) {
            NSString *newN = [n lowercaseString]; 

            for (NSString *m in words) {
                NSString *newM = [m lowercaseString];

                if ([newN isEqualToString: newM]) {
                    NSLog(@"%@ is equal to %@", newN, newM );
                }

            }          
        }

これは同じ結果をもたらします!ええと。

NSArray *names = [nameString componentsSeparatedByString:@"\n"];
NSArray *words = [itemsString componentsSeparatedByString:@"\n"];

int i = 0;
int j = 0;
while (i != [names count] ) {

    while (j != [words count]) {
        if ([[names objectAtIndex:i] caseInsensitiveCompare:[words objectAtIndex:j]] == NSOrderedSame)
        {
            NSLog(@"Voila! Name is : %@", [names objectAtIndex:i]);
        }
        j++;
    }
    j = 0;
    i++;

なにが問題ですか?わからない、やってみた。いずれかの配列から単語を1つずつ選択すると、正しい名前と単語が得られます。Words配列には、取得した出力としてほとんどの名前が含まれていません。Aaron、Aasomethingなどの名前だけを順番に取得しますが、それらは単語の配列ではありません。

4

1 に答える 1

0

実際、私は答えを見つけました。wordsファイルには、namesファイルのすべての名前が含まれています。つまり、すべての名前を取得するだけです。3つのコードバリアントはすべて意図したとおりに機能します。

ええと、少なくとも今日は何か新しいことを学びました。

于 2012-07-02T19:45:10.807 に答える