字符串多个范围替换

多个范围替换字符串

如以下图:

这里写图片描述

需求:

当点击发布的时候 输入的内容 要转换以下格式,@name 要用标签括起来如下:

哈哈哈哈哈<@>@乌索普</@>激动激动金额姐姐kkk<@>@乌索普</@>

注:以上那样做是为了防止假@ 用于服务器辨认真@和假艾特

以下代码只是部分替换艾特

  • 定义以下属性

@property(nonatomic, strong)NSMutableDictionary *backupAiteRangeDict;  //备份提交发布主题的时候用来替换aiteRangeDict此字典中的aite

@property(nonatomic, strong)NSMutableArray *rangeArrayM;  //艾特人的range 数组 用来设置高亮显示的
  • 替换高亮艾特文本
//替换高亮文字艾特内容
- (NSString *)replaceLightTxtWithAiteLabel:(NSString *)content
{
    if (self.rangeArrayM.count) {
        NSMutableArray *subStrArray = [NSMutableArray array];

        for (int i = 0; i < self.rangeArrayM.count; i++) {

            NSString *rangeStr = self.rangeArrayM[i];

            NSString *aiteNameStr = self.backupAiteRangeDict[rangeStr];

            NSString *aiteLabelStr = [content stringByReplacingCharactersInRange:NSRangeFromString(rangeStr) withString:aiteNameStr];

            //查找标记所在的范围
            NSRange range = [aiteLabelStr rangeOfString:@"</@>"];

            if (i == 0) {
                //截取标记所在的范围
                NSString *subSign = [aiteLabelStr substringToIndex:(range.location + range.length)];

                [subStrArray addObject:subSign];
            }else{
                //上一个范围
                NSString *beforeRangeStr = self.rangeArrayM[i-1];
                NSRange beforeRange = NSRangeFromString(beforeRangeStr);

                //截取标记所在的范围
                NSString *subSign = [aiteLabelStr substringWithRange:NSMakeRange(beforeRange.location + beforeRange.length, range.location + range.length - (beforeRange.location + beforeRange.length))];

                [subStrArray addObject:subSign];
            }
        }

        return [subStrArray componentsJoinedByString:@""];
    }else{
        return content;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值