工作当中,很多的时候需要把一段字符串中某些符合特定条件的字符串做特殊的处理,比如
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"];
}
本文介绍了两种在Objective-C中获取字符串中特定子串位置的方法,以便进行高亮等操作。第一种方法通过将字符串按子串分割并计算偏移量来获取位置;第二种方法采用循环查找子串并替换的方式。
1万+

被折叠的 条评论
为什么被折叠?



