字符串多个范围替换

xiaoxiao2021-02-28  100

多个范围替换字符串

如以下图:

需求:

当点击发布的时候 输入的内容 要转换以下格式,@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; } }
转载请注明原文地址: https://www.6miu.com/read-55525.html

最新回复(0)