Сравнение массивов и необычный результат - PullRequest
0 голосов
/ 13 декабря 2011

здесь, в этом коде, у меня есть предложение, которое я конвертирую в массив, затем у меня есть другой массив, который является стоп-листом, я хочу отфильтровать мое предложение по стоп-листу, значит, последнее предложение не должно содержать элементы стоп-списка!

это кажется таким легким, я убил себя, чтобы это сработало, но это никогда не сработало!Черт возьми!

Не могли бы вы сказать мне, в чем проблема?

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];



    NSString *sentence=[NSString stringWithString:@"i want to filter this sentence by stoplist array for my program"];


    NSArray *stopList=[[NSArray alloc]initWithObjects:@"an”,@“and”,@“by”,@“for”,@“from”,@“of”,@“the”,@“to”,@“with",nil];

    NSArray *query = [sentence componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

    NSMutableArray *finalsentence=[NSMutableArray array];


    for (NSString *word in query) { // for each word in the query...

        if (![stopList containsObject:word]) { 
            // ... if the stopList does not contain the word...

            [finalsentence addObject:word]; // ...add it to the final sentence
        }
    }
    NSLog(@"%@",finalsentence);


    [pool drain];
    return 0;
}

1 Ответ

0 голосов
/ 13 декабря 2011

Ну, одна проблема - что такое "q" в [finalsentence addObject:q]?В вашем коде не определено 'q'.

Другая проблема заключается в том, что у вас, похоже, есть тест, обратный описанию, которое вы дали.В вашем описании говорится, что вы хотите добавить каждое слово в 'finalsentence', если это слово указано в NOT в вашем stopList.Но в коде вы проверяете, является ли [stopList containsObject:[query objectAtIndex:i]] ДА.Я думаю, что вы должны проверять наличие NO там.

Кроме того, ваш цикл for можно выразить, вероятно, немного более четко, используя синтаксис быстрого перечисления:

for (NSString *word in query) { // for each word in the query...

        if (![stopList containsObject:word]) { 
            // ... if the stopList does not contain the word...

            [finalsentence addObject:word]; // ...add it to the final sentence
        }
    }

Надеюсь, это поможет.

РЕДАКТИРОВАТЬ

Вот выходные данные после копирования, вставки, запуска обновленного кода.Кажется, вы делаете то, что, как вы сказали, вы хотели, нет?

2011-12-13 03:36:55.544 Some6[8082:707] (
i,
want,
filter,
this,
sentence,
stoplist,
array,
my,
program
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...