1. 程式人生 > >獲取NSString中所有匹配子字串的NSRange的array

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

工作當中,很多的時候需要把一段字串中某些符合特定條件的字串做特殊的處理,比如

NSString *[email protected]"abcdefabcdefabcdefabcdefbcd";

我想把其中 所有的“bcd”做高亮處理,這個時候,首先要把這些匹配的字串對應的位置取出來,再利用NSMutableAttributedString做相應的高亮處理,這裡就說一下如何取這些匹配字串的NSRange。

方法一:

NSString *[email protected]"abcdefabcdefabcdefabcdefbcd";
NSString *[email protected]
"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"];
    }