处理文本中的超链接

本文探讨了如何有效地处理文本中的超链接,包括解析、提取和管理这些链接的方法,为文本处理提供实用策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 // modify by huangyibiao
    //添加文本信息
	TTTAttributedLabel *bubbleText = [[TTTAttributedLabel alloc]
                                      initWithFrame:CGRectMake(fromSelf?10.0f:27.0f, 20.0f, size.width+10, size.height+10)];
    bubbleText.delegate = self;
	bubbleText.backgroundColor = [UIColor clearColor];
    bubbleText.tag=indexPath.row;
	bubbleText.font = font;
	bubbleText.numberOfLines = 0;
	bubbleText.lineBreakMode = NSLineBreakByWordWrapping;
	bubbleText.text = text;
    bubbleText.linkAttributes = @{(NSString *)kCTUnderlineStyleAttributeName : [NSNumber numberWithBool:YES],
                                  (NSString*)kCTForegroundColorAttributeName : (id)[[UIColor blueColor] CGColor]};
    
    bubbleText.highlightedTextColor = [UIColor whiteColor];
    bubbleText.verticalAlignment = TTTAttributedLabelVerticalAlignmentTop;
    // end modify by huangyibiao
    
    // add by huangyibiao
    // reasion: handle links in chat content, ananylizing each link
    // 提取出文本中的超链接
    NSError *error;
    NSString *regulaStr = @"((http[s]{0,1}|ftp)://[a-zA-Z0-9\\.\\-]+\\.([a-zA-Z]{2,4})(:\\d+)?(/[a-zA-Z0-9\\.\\-~!@#$%^&*+?:_/=<>]*)?)|(www.[a-zA-Z0-9\\.\\-]+\\.([a-zA-Z]{2,4})(:\\d+)?(/[a-zA-Z0-9\\.\\-~!@#$%^&*+?:_/=<>]*)?)";
    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regulaStr
                                                                           options:NSRegularExpressionCaseInsensitive
                                                                             error:&error];
    NSArray *arrayOfAllMatches = [regex matchesInString:text
                                                options:0
                                                  range:NSMakeRange(0, [text length])];
    NSMutableAttributedString *attribute = [[NSMutableAttributedString alloc] initWithString:text];
    for (NSTextCheckingResult *match in arrayOfAllMatches) {
        NSString *substringForMatch = [text substringWithRange:match.range];
        [attribute addAttribute:(NSString *)kCTFontAttributeName value:(id)bubbleText.font range:match.range];
        [attribute addAttribute:(NSString*)kCTForegroundColorAttributeName
                          value:(id)[[UIColor blueColor] CGColor]
                          range:match.range];
        [bubbleText addLinkToURL:[NSURL URLWithString:substringForMatch] withRange:match.range];
    }
    // end add by huangyibiao


下面是代理 方法:

#pragma mark - TTTAttributedLabelDelegate 点击聊天内容中的超链接
- (void)attributedLabel:(TTTAttributedLabel *)label didSelectLinkWithURL:(NSURL *)url {
    HYBLoadWebviewController *web = [[HYBLoadWebviewController alloc] initWithUrl:url];
    web.hidesBottomBarWhenPushed = YES;
    [self.navigationController pushViewController:web animated:YES];
    return;
}



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值