【发布时间】:2014-10-15 23:02:46
【问题描述】:
到目前为止,我可以检测到短语中的单词。例如,如果用户键入“pork”,则会返回一个名为“Cooked Pork”的项目。但是,如果用户输入“pork”,则不会返回“pork*”之类的项目。
这就是我比较数组并找出短语中单词的方式:
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];
}
}
我的问题是如何解决这个问题,即使它在单词“pork*”中有一个像“*”这样的小扩展名,它也会检测到这个单词。
好吧,用非常简单的话来说,这就是我想要的:
如果一个数组中有“pork”这个词
另一个数组有工作“pork*”
我希望检测并返回单词“pork*”。
我的代码没有返回“pork*”,因此我问这个问题。
如果需要进一步说明,请告诉我。
更新:
我有两个由两个单独的数组填充的表视图。一个数组正在填充一个表格视图,其中填充了用户不喜欢的成分,另一个数组正在填充一个表格视图,其中填充了食品的成分。如果该食品的其中一种成分与某一种不受欢迎的食品相同,它将被标记为红色。
所以如果一种食物含有以下成分:
- 水
- 盐
- 鸡*
并且用户已经像这样填充了他的“不良成分”表视图:
- 花生
- 鸡
- 面筋
当配料表视图显示出来时,“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");
}
}
【问题讨论】:
-
您输入“熟猪肉”并搜索“猪肉”。 (注意空格。)那么“pork”不会在“porkupine”上受到打击(如果你允许我这个人为的例子)。
-
@JoshCaswell 为什么这个重复关闭? OP 已经在使用副本中的代码(大致)。显然,这个问题有一个特定的问题。简单地作为重复关闭并不能帮助 OP 解决他们的代码问题。
-
如果
lowerCellString的值为@"pork*",那么[lowerCellString rangeOfString:@"pork"]将返回(NSRange){.location=0, .length=4}。我可能错误地关闭了这个,但我不明白你在问什么。请澄清。 -
那个“重复”不是。
-
清楚地描述你的问题不仅是让别人理解的必要条件,也是你自己理解的必要条件。
标签: ios objective-c