我有文字是" 上帝是伟大的,伟大的上帝绝对!,上帝祝福我。&#34 ;我在tableviewcell
中显示了此文字,并使用了NSMutableAttributedString
。
实施例 1.上帝 2.上帝 3.上帝
当我搜索文字"上帝"它突出显示像#" god"但我需要突出显示像神,上帝和上帝这样的文本,无论它应该突出显示。
码
NSString *initial = [NSString stringWithFormat:@"%@ %d - %d : %@",[appDelegate.arrChapterName objectAtIndex:nBookNo-1],[[arrVerses objectAtIndex:1] integerValue],[[arrVerses objectAtIndex:2] integerValue],[arrVerses objectAtIndex:3]];
NSMutableAttributedString *mutableAttributedString = [[NSMutableAttributedString alloc] initWithString:initial];
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:[NSString stringWithFormat:@"(%@)",searchBar.text] options:kNilOptions error:nil];
NSRange range = NSMakeRange(0,initial.length);
[regex enumerateMatchesInString:initial options:kNilOptions range:range usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
NSRange subStringRange = [result rangeAtIndex:1];
[mutableAttributedString addAttribute:NSBackgroundColorAttributeName value:[UIColor lightGrayColor] range:subStringRange];
}];
cell.textLabel.attributedText = mutableAttributedString;
答案 0 :(得分:0)
考虑使用以下代码替换正则表达式:
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:[NSString stringWithFormat:@"(%@)",searchBar.text]
options:NSRegularExpressionCaseInsensitive error:nil];
有关更多信息和示例,请参阅here。
答案 1 :(得分:0)
你走了,
NSString *initial = [NSString stringWithFormat:@"%@ %d - %d : %@",[appDelegate.arrChapterName objectAtIndex:nBookNo-1],[[arrVerses objectAtIndex:1] integerValue],[[arrVerses objectAtIndex:2] integerValue],[arrVerses objectAtIndex:3]];
NSMutableAttributedString *mutableAttributedString = [[NSMutableAttributedString alloc] initWithString:initial];
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:[NSString stringWithFormat:@"(%@)",searchBar.text] options:NSRegularExpressionCaseInsensitive error:nil];
NSRange range = NSMakeRange(0,initial.length);
[regex enumerateMatchesInString:initial options:kNilOptions range:range usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
NSRange subStringRange = [result rangeAtIndex:1];
[mutableAttributedString addAttribute:NSBackgroundColorAttributeName value:[UIFont boldSystemFontOfSize:12.0] range:subStringRange];
}];
cell.textLabel.attributedText = mutableAttributedString;