黑马程序员技术交流社区

标题: OC中统计字符出现次数的解决方法 [打印本页]

作者: 烛风小糊涂    时间: 2016-5-8 15:58
标题: OC中统计字符出现次数的解决方法
本帖最后由 烛风小糊涂 于 2016-5-8 16:02 编辑

统计出下面的字符串中“咳嗽”出现的次数:
NSString *s1 = @"患者:「大夫,我咳嗽得很厉害。」大夫:「你多大 年纪?」患者:「七十五岁。」大夫:「二十岁咳嗽吗?」患者:「不咳 嗽。」大夫:「四十岁时咳嗽吗?」患者:「也不咳嗽。」大夫:「那现 在不咳嗽,还要等到什么时候咳嗽?」”;

原题是基础班视频里面的练习题,原题是用NSString的,但我只能用NSMutableString来解决还请高手教我怎么用NSString搞定~
这里献上我的思路~欢迎大家交流~!
  1. #import <Foundation/Foundation.h>

  2. int main(int argc, const char * argv[]) {
  3.     @autoreleasepool {
  4.         //定义一个变量,用于计数
  5.         int i = 0;
  6.         
  7.         //使用NSMutableString,方便之后对字符串进行操作
  8.         NSMutableString *s1 = [NSMutableString stringWithFormat:@"患者:「大夫,我咳嗽得很厉害。」大夫:「你多大 年纪?」患者:「七十五岁。」大夫:「二十岁咳嗽吗?」患者:「不咳 嗽。」大夫:「四十岁时咳嗽吗?」患者:「也不咳嗽。」大夫:「那现 在不咳嗽,还要等到什么时候咳嗽?」"];
  9.       
  10.         //把原句中的空格给去掉(这句话有警告,不知道怎么解决)
  11.         NSMutableString * str = [s1 stringByReplacingOccurrencesOfString:@" " withString:@""];
  12.         
  13.         //定义range结构体,找到第一个“咳嗽”出现的位置
  14.         NSRange range = [str rangeOfString:@"咳嗽"];
  15.         
  16.         //由于不确定“咳嗽”出现的次数,所以使用while循环,并当寻找“咳嗽”长度为0,即没有“咳嗽”出现在字符串中跳出循环
  17.         while (range.length != 0) {
  18.             
  19.             //把rangeOfString找到的“咳嗽”替换成“**”
  20.             [str replaceCharactersInRange:NSMakeRange(range.location, 2) withString:@"**"];
  21.             
  22.             //计数+1
  23.             i++;
  24.             
  25.             //替换完毕后,继续寻找“咳嗽”
  26.             range = [str rangeOfString:@"咳嗽"];
  27.           }
  28.         
  29.         //打印i,此时的i即为“咳嗽”出现的次数
  30.         NSLog(@"\"咳嗽\"出现次数为%d次",i);
  31.    
  32.     }
  33.    
  34.     return 0;

  35. }
复制代码




作者: 烛风小糊涂    时间: 2016-5-8 16:01
改成**总让我感觉被和谐了什么




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2