iOS 技术分享

iOS - 获取字符中所有括号内字符,并特殊处理

2019-08-29  本文已影响0人  Joh蜗牛
1.遍历字符串,获取所有括号中字符串,返回数组:
传入:NSString *str = @"【管理员】请您审核【山西建邦集团有限公司】的商品";
返回值:NSArray  *ary = @[【管理员】,【山西建邦集团有限公司】];
//找出字符串中用括号括住的字符串们
- (NSArray *)handleStringWithString:(NSString *)str{

    NSMutableArray *chooseAry = [@[] mutableCopy];

    NSMutableString * muStr = [NSMutableString stringWithString:str];

    while ([muStr containsString:@"【"]) {
        NSString *chooseStr = @"";

        NSRange range = [muStr rangeOfString:@"【"];
        NSRange range1 = [muStr rangeOfString:@"】"];


        if (range.location != NSNotFound) {
            NSInteger loc = range.location;
            NSInteger len = range1.location - range.location;

            chooseStr = [muStr substringWithRange:NSMakeRange(loc, len + 1)];
            [chooseAry addObject:chooseStr];

            [muStr deleteCharactersInRange:NSMakeRange(loc, len + 1)];
        }
    }


    return chooseAry;

}
2.将处理过的字符串赋值给Label:
self.contentLabel.attributedText = [self setTextColor:contentStr chooseAry:[self handleStringWithString:contentStr] color:kColorHex(0x333333) fontSize:15];


// 处理字符串
- (NSMutableAttributedString *)setTextColor:(NSString *)text chooseAry:(NSArray *)chooseAry color:(UIColor *)color fontSize:(CGFloat)fontSize{

    NSMutableAttributedString *contentStr = [[NSMutableAttributedString alloc]initWithString:text];
    for (NSString *str in chooseAry) {
        //找出特定字符在整个字符串中的位置
        NSRange redRange = NSMakeRange([[contentStr string] rangeOfString:str].location, [[contentStr string] rangeOfString:str].length);
        //修改特定字符的颜色
        [contentStr addAttribute:NSForegroundColorAttributeName value:color range:redRange];
        if (fontSize > 0) {
            //修改特定字符的字体大小
            [contentStr addAttribute:NSFontAttributeName value:[UIFont boldSystemFontOfSize:fontSize] range:redRange];
        }
    }


    return contentStr;

}

上一篇下一篇

猜你喜欢

热点阅读