@的规则

-(NSMutableAttributedString *)addTest:(NSString *)text{


     NSLog(@"text-[@454,新用户470]--%@",text);

    // @的规则

    _textArray=[[NSMutableArrayalloc]init];

//    NSString *atPattern = @"@[0-9a-zA-Z\\u4e00-\\u9fa5+^[\u4E00-\u9FA5A-Za-z0-9_]+$+]+";

    NSString *atPattern=@"\\[@(\\d+),(.*?)\\]";

    [text enumerateStringsMatchedByRegex:atPatternusingBlock:^(NSInteger captureCount,NSString *const__unsafe_unretained *capturedStrings, const NSRange *capturedRanges, volatile BOOL *const stop) {

        NSRange  range=*capturedRanges;

        JRTextModel * model=[[JRTextModelalloc] init];

        model.text=*capturedStrings;

        model.index=range.location;

        model.type=0;

        NSLog(@"0-------%@",model.text);

        [self.textArrayaddObject:model];

    }];

 

    

    [text enumerateStringsSeparatedByRegex:atPatternusingBlock:^(NSInteger captureCount,NSString *const__unsafe_unretained *capturedStrings, const NSRange *capturedRanges, volatile BOOL *const stop) {

        NSRange  range=*capturedRanges;

        JRTextModel * model=[[JRTextModelalloc] init];

        model.text=*capturedStrings;

        model.index=range.location;

        model.type=1;

         NSLog(@"1-------%@",model.text);

        [self.textArrayaddObject:model];

    }];

    [self.textArraysortUsingComparator:^NSComparisonResult(JRTextModel * obj1,JRTextModel * obj2) {

        return obj1.index-obj2.index;

    }];

    NSMutableAttributedString *mattr=[[NSMutableAttributedStringalloc]init];

    int atNum=0;

    for (JRTextModel *modelin self.textArray) {

        if (model.type==1) {

            if(model.text.length>0){

                NSAttributedString *str=[[NSAttributedStringalloc]initWithString:model.text];

                

                [mattr appendAttributedString:str];

            }

            

        }else{

            //

          

            NSString *textstr=[NSStringstringWithFormat:@"%@",model.text];

            NSRange

            startRange = [textstr rangeOfString:@"[@"];

            

            NSRange endRange;

            if (startRange.length!=0) {

                

                endRange = [textstr rangeOfString:@","];

            }else{

                endRange = [textstr rangeOfString:@""];

            }

            NSRange

            range = NSMakeRange(startRange.location

                                + startRange.length,

                                endRange.location

                                - startRange.location

                                - startRange.length);

            NSLog(@"textstr---%@",textstr);

            

            NSString *result = [textstr substringWithRange:range];

            NSString *str=[NSStringstringWithFormat:@"%@,",result];

            NSLog(@"result---%@",result);

            NSLog(@"str---%@",str);

            NSString *strUrl = [textstrstringByReplacingOccurrencesOfString:str withString:@""]; //去掉

            NSString * str1 = [strUrlstringByReplacingOccurrencesOfString:@"[@"withString:@"@"];//替换字符

            NSString * str2 = [str1stringByReplacingOccurrencesOfString:@"]"withString:@""];//替换字符

//            strUrl=str2;

            

            NSLog(@"str2:%@",str2);

            

            

            NSAttributedString *laststr1=[[NSAttributedStringalloc]initWithString:str2];

            //添加文字颜色

            [mattr appendAttributedString:laststr1];

            

            if (range.length!=0) {

                


                if (atNum==0) {


                    [mattr addAttribute:NSLinkAttributeNamevalue:[NSStringstringWithFormat:@"postatme://%@",result]range:NSMakeRange(model.index, laststr1.length)];

                }else{


                    [mattr addAttribute:NSLinkAttributeNamevalue:[NSStringstringWithFormat:@"postatme://%@",result]range:NSMakeRange(model.index-atNum*(3+(int)(endRange.location                                                                                           - startRange.location- startRange.length)), laststr1.length)];

                }

                atNum++;

                

//                [mattr addAttribute:NSForegroundColorAttributeName value:THEMECOLOR range:NSMakeRange(model.index, laststr1.length)];

            }else{

//                result=@"";

            }

            

            

        }

          [mattr addAttribute:NSFontAttributeNamevalue:[UIFontsystemFontOfSize:kStatuContentFont]range:NSMakeRange(0, mattr.length)];

//

    }

    

    

    return mattr;

    

}

#import <Foundation/Foundation.h>


@interface JRTextModel : NSObject

@property(nonatomic,strong)NSString *text;

@property(nonatomic,assign)NSInteger index;

@property(nonatomic,assign)NSInteger type;

@end


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值