0

我试图让这段代码工作,想法是比较两个字符串数组,第一个是名称,第二个是单词,所以我尝试从第一个数组中找到单词,然后将它与第二个数组中的所有单词进行比较,如果我得到了肯定的结果,我把这个词打印出来。但它没有按预期工作,它只是打印所有名称数组。这段代码有什么问题?也许有更有效的方法来做到这一点?

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++;

怎么了?我想不通,我试过了。如果您从任一数组中逐个选择单词,您将获得正确的名称和单词。Words 数组中没有大多数名称作为我得到的输出。我只是按顺序得到名称,Aaron、Aasomething 等,它们不在单词数组中。

4

1 回答 1

0

其实我已经找到答案了。words 文件包含 names 文件中的所有名称。所以你只要得到所有的名字。所有三个代码变体都按预期工作。

好吧,至少我今天学到了一些新东西。

于 2012-07-02T19:45:10.807 回答