您的位置:首页 > 其它

获取NSString中所有匹配子字符串的NSRange的array

2016-02-23 17:15 274 查看
工作当中,很多的时候需要把一段字符串中某些符合特定条件的字符串做特殊的处理,比如

NSString *string1=@"abcdefabcdefabcdefabcdefbcd";

我想把其中 所有的“bcd”做高亮处理,这个时候,首先要把这些匹配的字符串对应的位置取出来,再利用NSMutableAttributedString做相应的高亮处理,这里就说一下如何取这些匹配字符串的NSRange。

方法一:

NSString *string1=@"abcdefabcdefabcdefabcdefbcd";
NSString *string2=@"bcd";

NSArray *array=[string1 componentsSeparatedByString:string2];
NSMutableArray *arrayOfLocation=[NSMutableArray new];
int d=0;
for (int i=0; i<array.count-1; i++) {
NSString *string=array[i];
NSNumber *number=[NSNumber numberWithInt:d+=string.length];
d+=string2.length;
[arrayOfLocation addObject:number];

}
NSLog(@"%@",arrayOfLocation);


匹配子字符串的NSRange.location存储在NSArray里,


NSRange.length


就是字符串的长度。



方法二:

NSString *str = @"abcdefabcdefabcdefabcdef";

NSString *copyStr = str;
NSMutableArray *arrayOfLocation=[NSMutableArray new];
while ([copyStr rangeOfString:@"bcd"].location != NSNotFound)

{
NSRange  range  = [copyStr rangeOfString:@"bcd"];
NSLog(@"location:%lu",(unsigned long)range.location);
[arrayOfLocation addObject:[NSNumber numberWithInteger:range.location]];
copyStr = [copyStr stringByReplacingCharactersInRange:NSMakeRange(range.location, range.length) withString:@"XXX"];
}




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: