请教字符串匹配的问题

sendo_14 2016-12-12 09:19:13
1.如果不止一个字符串需要匹配,而是定义了一个数组,需要分别匹配这个数组里全部的字符串,请问用什么方法比较简便呢?
比如,数组里是a、b、c,有一篇文章,需要匹配出这篇文章里全部的a、b、c。
2.另外,用下面这个方法,打印出来的结果只有所匹配到的第一个结果,而全文里实际上应该是不止一个匹配结果的,这是什么原因呢?
NSRange range = [contents rangeOfString:xx];
NSLog(@"rang:%@",NSStringFromRange(range));
...全文
210 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
猿Coding 2016-12-13
  • 打赏
  • 举报
回复
首先解决第二个问题 搜索一个字符串 在另一个字符串中 所有的位置 - (NSArray *)rangesOfString:(NSString *)searchString inString:(NSString *)str {     NSMutableArray *results = [NSMutableArray array];     NSRange searchRange = NSMakeRange(0, [str length]);     NSRange range;     while ((range = [str rangeOfString:searchString options:0 range:searchRange]).location != NSNotFound) {       [results addObject:[NSValue valueWithRange:range]];       searchRange = NSMakeRange(NSMaxRange(range), [str length] - NSMaxRange(range));   }   return results; } 然后第一个,我想到的最方便的就是,遍历你那个 abc数组,然后用上面那个方法,分别循环出文章中a的所有位置、b的所有位置、c的所有位置
XiangHongJiang 2016-12-13
  • 打赏
  • 举报
回复
一:提供两种参考方案 //按照单个字符分割,取个数 NSString *str = @"a(1)gewjogjwe(ho)jghwl你好ej(ho)wjwb(2)osd你好,b(7),c(8)ofngc(3)a(4)b(5)sea(6)"; NSArray *singleArray = @[@"a",@"b",@"c"]; NSString *charchterStr = [singleArray componentsJoinedByString:@""]; NSArray *countArray = [str componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:charchterStr]]; NSLog(@"---%ld---",countArray.count - 1); //按照字符串分割,取个数 NSArray *customArray = @[@"a",@"你好",@"ho",@"b",@"c"]; NSString *lastStr = [NSString stringWithString:str]; for (int i = 0; i < customArray.count; i ++) { NSString *seperatedStr = customArray[i]; NSArray *strArray =[lastStr componentsSeparatedByString:seperatedStr]; lastStr = [strArray componentsJoinedByString:@"/"]; } NSInteger lastCount = [lastStr componentsSeparatedByString:@"/"].count - 1; NSLog(@"---%ld---",lastCount); 二:NSRange 查找字符串的位置,默认只查找第一个哦,所以如果用Range方法,请参考下面这个方法 NSString *contentStr = @"1234(xx)56748(xx)126974949(xx)";//内容Str NSString *needFindStr = @"xx";//需要查找的字符串位置 NSMutableString *resultStr = [NSMutableString stringWithString:contentStr]; NSInteger count = 0; NSRange range = [resultStr rangeOfString:needFindStr]; while (range.length) { NSLog(@"%@",NSStringFromRange(range)); count ++; [resultStr deleteCharactersInRange:range]; range = [resultStr rangeOfString:needFindStr]; } NSLog(@"---%ld---",count);

29,028

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧