У меня проблема при сравнении двух массивов NSString. Один из массивов продолжает меняться, потому что он связан с UITextField, поэтому, когда вы пишете что-либо, оно сохраняется в массиве.Найти последовательность совпадающих слов в двух строках
-(void) tick: (ccTime) dt{
NSString *level = (NSString *)gameData[2]; //this doesn't change. example: "one two three .."
NSString *text = (NSString *)tf.text; //text field keeps changing as I write
NSArray *separatedText = [text componentsSeparatedByString:@" "];
NSArray *separatedLevel = [level componentsSeparatedByString:@" "];
Я хочу, чтобы проверить, все ли слова, которые вы пишете матч с любым из слов, которые хранятся в массиве уровня. Например, Уровень: «Сравнение двух строк» И я пишу «сравнение» Таким образом, этот метод вернет, что 1 слово соответствует. Поэтому, если я пишу «сравнение двух», он возвращает 2 совпадения слов.
Я пытался с этим кодом:
for (int i=0;i<separatedText.count;i++){
for (int j=0;j<separatedLevel.count;j++){
if (![separatedText[i] caseInsensitiveCompare:separatedLevel[j]]){
NSLog(@"OK");
}
}else{
NSLog(@"NO");
}
}
}
, но он не работает должным образом. Любые идеи?
спасибо.
EDIT
caseInsensitiveCompare не возвращает BOOL, но это работает для меня так. Если я запускаю этот код с уровня «один два три» и текст «один» результат:
OK
NO
NO
И «один два» Результат:
NO
OK
NO
Когда это должно быть OK OK НЕТ
EDIT 2
Извините, если я выразил себя неправильно.
Результат, который я хочу, «ОК ОК НЕТ», когда я пишу 2 слова, которые соответствуют Или, может быть, результат, который возвращает количество совпадений. Так и в предыдущем примере:
Уровень: «один два три» текста: «один два» Результат: «2 согласующего слово»
не работает, результат всегда «ни один из элементов» – mursang