我知道这个问题听起来很老套。我找不到更好的表达方式,所以我会花时间解释我正在努力解决的问题。
我有一个从用户那里获取输入的 iPhone 应用程序。我有一个 plist(我很快会将其转换为在线数据库)我目前所做的就是这个。我将我的输入字符串与我的 plist 中项目的成分部分进行比较。
这是plist格式
<array>
<dict>
<key>category</key>
<string>desert</string>
<key>numberOfPerson</key>
<string>3</string>
<key>recipeImage</key>
<string>asd.jpg</string>
<key>time</key>
<string>15</string>
<key>recipeName</key>
<string>Puding</string>
<key>recipeDetail</key>
我将输入与 recipeIngredients 进行比较。但我的代码所做的并不是我需要的。如果比较结果为真,我只列出我的 plist 中包含输入成分的每个项目。我可以过滤选定的食谱,但我想要什么是这样的:除非输入和成分完全匹配,否则我不想展示它。
问题是这样的。我的食谱配料是这样的格式 1 勺糖,1 勺盐,100 克鸡肉。
用户输入盐、糖等输入。鸡肉,所以我无法完全比较它。它永远不会相同,所以我无法展示任何东西。
我怎样才能做到这一点。
我愿意接受任何类型的建议。
我是这样比较的
results = [arrayOfPlist filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
NSDictionary *_dataRow = (NSDictionary *)evaluatedObject;
return ([[[_dataRow valueForKey:@"recipeIngredients"] lowercaseString] rangeOfString:[searchText lowercaseString]].location != NSNotFound);
}]];
其中 searchText 是我的输入。
最佳答案
首先,您永远不会知道用户输入是否有错字。
但是您可以做的是在比较两个字符串之前,您可以对给定的字符集进行一些修整。
NSString
类中有一个方法叫做:
- (NSString *)stringByTrimmingCharactersInSet:(NSCharacterSet *)set
如果你想摆脱 .或 - 字符,您需要在字符集中指定它们。然后,您可以比较两个字符串。
关于ios - 如何仅比较文本中选定的字符串与 objective-c 中的给定输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23303479/