获取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);
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"]; }
相关文章推荐
- Android之WebView的使用
- iOS Xcode AppDelegate.m中方法的介绍
- 使用MFC操作EXCEL文件
- Activity详解 (五) : startActivityForResult()与onActivityResult()
- CSS3的border-radius属性详解
- 整理Linux查看系统日志的一些经常使用命令
- Angular 使用个人总结
- POPTEST老李分享DOM解析XML之java
- Codeforces Round #343 (Div. 2)
- behemoth - 02
- Android开发工具下载及Android开源代码整理下载地址
- 并行计算之路<6>——CUDA的软件架构
- Unity3D学习笔记(十)物理引擎:碰撞器
- 浅谈 Excel 对象模型
- 也议MySQL中隐式转换
- 【CSS3】:disabled选择器
- 如何处理大数据量抽数长期无响应
- Java静态绑定和动态绑定
- overflow溢出处理
- POPTEST老李谈JVM、JRE、JDK、java ee sdk with jdk区别