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

工作当中,很多的时候需要把一段字符串中某些符合特定条件的字符串做特殊的处理,比如

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"];
    }



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值