突出显示低和&由NSMutableAttributedString使用的大写文本

时间:2015-04-30 10:16:09

标签: ios objective-c

我有文字是" 上帝是伟大的,伟大的上帝绝对!,上帝祝福我。&#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;

2 个答案:

答案 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;