enum {
NSCaseInsensitiveSearch = 1,
NSLiteralSearch = 2,
NSBackwardsSearch = 4,
NSAnchoredSearch = 8,
NSNumericSearch = 64,
NSDiacriticInsensitiveSearch = 128,
NSWidthInsensitiveSearch = 256,
NSForcedOrderingSearch = 512,
NSRegularExpressionSearch = 1024
};
- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
[self.filteredListContent removeAllObjects];
for (Notice *notice in allNoticeArray)
{
if ([scope isEqualToString:@"标题"])
{
NSComparisonResult result = [notice.title compare:searchText
options:NSWidthInsensitiveSearch
range:NSMakeRange(0, [searchText length])];
if (result == NSOrderedSame)
{
[self.filteredListContent addObject:notice];
}
}
}
}
searchText
& notice.title
都是中文字符。
那么,我应该使用哪些搜索和比较选项?
提前谢谢你。祝福。
答案 0 :(得分:1)
我认为NSWidthInsensitiveSearch
在您的方案中使用效果很好。 (只需要检查标题是否以关键字开头,对吗?)
汉字中没有案例和变音符号这样的概念。如果您没有NSBackwardsSearch
或其他要求的额外要求,NSWidthInsensitiveSearch
就可以了,因为您可以忽略西方字符的全宽和半宽形式之间的区别:
NSWidthInsensitiveSearch
搜索忽略具有全宽和半宽形式的字符的宽度差异,如东亚字符集中所示。
例如,使用此选项,全角拉丁小写字母'a'(Unicode代码点U + FF41)等于基本的拉丁小写字母'a'(Unicode代码点U + 0061)。