如何在Objective-C中检测其他单词中的单词

时间:2014-10-15 23:02:46

标签: ios objective-c

到目前为止,我可以检测短语中的单词。例如,如果用户键入“猪肉”,则将返回名为“熟猪肉”的项目。但是,如果用户输入“猪肉”,则不会退回“猪肉*”等项目。

这是我比较我的数组和在短语中删除单词的方式:

  for (NSString *allergicITem in matchAgainstArray)
{
    NSString *lowerString = [allergicITem lowercaseString];
    if ([theLowerCellString rangeOfString:lowerString].location != NSNotFound)
    {
        cell.textLabel.textColor = [UIColor redColor];
    }

    else
    {
        cell.textLabel.textColor = [UIColor blackColor];
    }
}

我的问题是如何解决这个问题,即使它在“猪肉*”这个词中有一个像“*”这样的小扩展名,它也会检测到这个词。

好的,非常简单的话,这就是我想要的:

如果一个数组中有“猪肉”一词

另一个阵列的作品是“猪肉*”

我希望检测并返回“猪肉*”这个词。

我的代码没有返回“猪肉*”,因此我问这个问题。

如果需要进一步澄清,请告诉我。

更新:

我有两个由两个独立数组填充的表视图。一个数组填充填充有用户不喜欢的成分的表视图,另一个数组填充填充有食品成分的表视图。如果食品的其中一种成分与其中一种不良商品相同,则会标记为红色。

因此,如果食物含有以下成分:

  • 鸡*

并且用户填写了他的“不良成分”表视图,如下所示:

  • 花生
  • 面筋

当显示成分表视图时,“chicken *”对象应标记为红色。

更新2:

代码证明了我的观点(你们所有人都可以测试):    NSMutableArray * badIng = [[NSMutableArray alloc] init];     NSMutableArray * totalIng = [[NSMutableArray alloc] init];

[badIng addObject:@"Chicken"];
[badIng addObject:@"gluten"];

[totalIng addObject:@"Chicken*"];
[totalIng addObject:@"water"];


for (NSString *badItem in badIng)
{
    NSString *lowerbadString= [badItem lowercaseString];
    NSString *totalString = [totalIng objectAtIndex:0];
    NSString *totalLowerString = [totalString lowercaseString];

    if ([totalLowerString rangeOfString:lowerbadString].location != NSNotFound)
    {
        NSLog(@"Here is the object: %@", badItem);
    }

    else

    {
        NSLog(@"We didn't find it");
    }

}

2 个答案:

答案 0 :(得分:1)

将您的列表设为:

" cooked pork "
" roast beef "
" candied yams "
" porkupine "

(注意前导/尾随空白。)

然后使用" pork "搜索上面的列表。 " cooked pork "将匹配," porkupine "不会。

答案 1 :(得分:-1)

哇,好像我找到了一个更好的方法来做到这一点。因为我使用的是iOS 8,所以我这样做了:

if ([theLowerCellString containsString:lowerString])
    {
        cell.textLabel.textColor = [UIColor redColor];
    }

    else
    {
        cell.textLabel.textColor = [UIColor blackColor];
    }

现在它像魅力一样工作,并返回我需要的物品。