0%

字符串操作range注意事项

代码:

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
{
NSString *string = @"";
NSString *ret = [string stringByReplacingCharactersInRange:NSMakeRange(0, 0) withString:@"因吹斯汀"];
NSLog(@"string:%@\nret:%@", string, ret); //因吹斯汀
}
{
NSString *string = @"倒计时开关是";
NSString *ret = [string stringByReplacingCharactersInRange:NSMakeRange(0, 0) withString:@"因吹斯汀"];
NSLog(@"string:%@\nret:%@", string, ret); //因吹斯汀倒计时开关是
}
{
NSString *string = @"倒计时开关是";
NSString *ret = [string stringByReplacingCharactersInRange:NSMakeRange(0, 1) withString:@"因吹斯汀"];
NSLog(@"string:%@\nret:%@", string, ret); //因吹斯汀计时开关是
}
{
NSString *string = @"倒计时开关是";
NSString *ret = [string stringByReplacingCharactersInRange:NSMakeRange(string.length, 0) withString:@"因吹斯汀"]; //倒计时开关是因吹斯汀
NSLog(@"string:%@\nret:%@", string, ret);
}
{
NSString *string = @"倒计时开关是";
NSString *ret = [string stringByReplacingCharactersInRange:NSMakeRange(string.length - 1, 1) withString:@"因吹斯汀"]; //倒计时开关因吹斯汀
NSLog(@"string:%@\nret:%@", string, ret);
}
{
NSString *string = @"倒计时开关是";
NSString *ret = [string stringByReplacingCharactersInRange:NSMakeRange(string.length, 1) withString:@"因吹斯汀"]; //崩溃
NSLog(@"string:%@\nret:%@", string, ret);
}

总结:

传入的range必须满足:(range.location + range.length) <= string.length,否则会发生越界崩溃。

觉得文章有帮助可以打赏一下哦!