How to get all NSRange of a particular character in a NSString?

后端 未结 4 1875
醉酒成梦
醉酒成梦 2020-12-10 11:21

I have two NSStrings: orgText and searchLetter.
I want to highlight every occurrences of the searchLetter in the orgText with a re

4条回答
  •  不知归路
    2020-12-10 11:54

    I wrote this method for my project - SUITextView with highlight:

    - (NSMutableAttributedString*) setColor:(UIColor*)color word:(NSString*)word inText:(NSMutableAttributedString*)mutableAttributedString {
    
        NSUInteger count = 0, length = [mutableAttributedString length];
        NSRange range = NSMakeRange(0, length);
    
        while(range.location != NSNotFound)
        {
            range = [[mutableAttributedString string] rangeOfString:word options:0 range:range];
            if(range.location != NSNotFound) {
                [mutableAttributedString setTextColor:color range:NSMakeRange(range.location, [word length])];
                range = NSMakeRange(range.location + range.length, length - (range.location + range.length));
                count++; 
            }
        }
    
        return mutableAttributedString;
    }
    

    And in my category of NSMutableAttributedString:

    - (void) setTextColor:(UIColor*)color range:(NSRange)range {
        // kCTForegroundColorAttributeName
        [self removeAttribute:(NSString*)kCTForegroundColorAttributeName range:range]; // Work around for Apple leak
        [self addAttribute:(NSString*)kCTForegroundColorAttributeName value:(id)color.CGColor range:range];
    }
    

提交回复
热议问题