比较两个 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");
}
}
}
但它不能正常工作。有任何想法吗?
非常感谢。
编辑
caseInsensitiveCompare 不返回 BOOL,但它对我有用。如果我使用级别“一二三”和文本“一”运行此代码,结果是:
OK
NO
NO
而“一二”的结果是:
NO
OK
NO
什么时候应该 OK OK NO
编辑 2
对不起,如果我表达错误。
当我写 2 个匹配的单词时,我想要的结果是“OK OK NO”,或者可能是返回匹配数的结果。所以在前面的例子中:
级别:“一二三” 文本:“一二” 结果:“2 个匹配词”