多个范围替换字符串
如以下图:
需求:
当点击发布的时候 输入的内容 要转换以下格式,@name 要用标签括起来如下:
哈哈哈哈哈
<@>@乌索普
</@>激动激动金额姐姐kkk
<@>@乌索普
</@>
注:以上那样做是为了防止假@ 用于服务器辨认真@和假艾特
以下代码只是部分替换艾特
定义以下属性
@property(
nonatomic,
strong)
NSMutableDictionary *backupAiteRangeDict;
@property(
nonatomic,
strong)
NSMutableArray *rangeArrayM;
替换高亮艾特文本
- (
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;
}
}