字符串多个范围替换
程序员文章站
2022-07-15 09:33:53
...
多个范围替换字符串
如以下图:
需求:
当点击发布的时候 输入的内容 要转换以下格式,@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;
}
}
上一篇: [小知识]excel数字转中文大写公式
下一篇: 1039 十进制整数转二进制