1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
NSString *newNameStr = nil;
if(originStr.length > 1){
NSMutableString *mStr = [[NSMutableString alloc] init];
if(_range.location > 0){
//在中间或者在末尾插入@,取出之前的,再取出之后的。
NSString *beforeStr = [originStr substringWithRange:NSMakeRange(0, _range.location)];
[mStr appendString:beforeStr];
BOOL bCenterInsertFlag = NO;
BOOL bNeedInsertAtFlag = YES;
if(_range.location + 1 < originStr.length){
bCenterInsertFlag = YES;

//中间插入.判断前一个是否@
NSString *lastChar = [beforeStr substringFromIndex:beforeStr.length-1];
if([lastChar isEqualToString:@"@"]){
bNeedInsertAtFlag = NO;
}

if(beforeStr.length > 2 && beforeStr.length-2 > 0){
NSString *lastTwoChar = [beforeStr substringFromIndex:beforeStr.length-2];
if([lastTwoChar isEqualToString:@"@@"]){
[mStr replaceOccurrencesOfString:@"@@" withString:@"@" options:nil range:NSMakeRange(0, mStr.length)];
}
}

}else{
//末尾插入.判断前一个是否@
NSString *lastChar = [beforeStr substringFromIndex:beforeStr.length-1];
if([lastChar isEqualToString:@"@"]){
bNeedInsertAtFlag = NO;
}
}

if(bNeedInsertAtFlag){
[mStr appendString:@"@"];
}
[mStr appendString:nameStr];
if(bCenterInsertFlag){ //如果在文字中间插入,拿到@之后的字符串
NSString *afterStr = [originStr substringFromIndex:_range.location+1];
[mStr appendString:afterStr];
}
}else{
//首字母为@符号,截取之后的.
[mStr appendString:@"@"];
[mStr appendString:nameStr];
NSString *afterStr = [originStr substringFromIndex:1];
[mStr appendString:afterStr];
}
newNameStr = mStr;
}else{
newNameStr = [NSString stringWithFormat:@"%@%@",mutableStr,nameStr];
}

评论