黑马程序员技术交流社区

标题: 分享一道OC题目 [打印本页]

作者: 我说你是个逗比    时间: 2014-10-6 20:31
标题: 分享一道OC题目
实现一个函数 NSString *string WithoutNum(NSSting* str),删除字符串的所有数字这道题是视频后面的作业,不知道有什么更好的方法,希望大家可以指点一下:)
  1. #import <Foundation/Foundation.h>

  2. NSString *stringWithoutNum(NSString *str);

  3. int main()
  4. {
  5.     NSString *s = stringWithoutNum(@"jai05tg3467ji5544rgs7few9");
  6.     NSLog(@"%@",s);
  7.     return 0;
  8. }

  9. NSString * stringWithoutNum(NSString *str)
  10. {
  11.     /*
  12.      思路分析:
  13.      1.用for循环结构遍历字符串所有0-9的数字
  14.      2.用while删除字符串里的每个数字
  15.      
  16.      */
  17.     for(int a = 0;a<=9;a++)
  18.         
  19.     {
  20.         //把数字转换字符
  21.         NSString *str2 = [NSString stringWithFormat:@"%d",a];
  22.         
  23.         //取出第一数字在字符串中的范围
  24.         NSRange range = [str rangeOfString:str2];
  25.         
  26.         
  27.         while(range.location !=NSNotFound)
  28.         {
  29.                //替换字符串里所有的数字
  30.             str = [str stringByReplacingCharactersInRange:range withString:@""];
  31.             
  32.             //重新选定第一数字的范围
  33.             range = [str rangeOfString:str2];
  34.             
  35.         }
  36.     }
  37.     return str;
  38. }
复制代码


作者: 小叶子    时间: 2014-10-7 09:18
ding...........
作者: songxing10000    时间: 2014-10-7 09:27
  1. NSString *stringWithoutNum(NSString *str)
  2. {
  3.     NSMutableString *strMu = [NSMutableString stringWithFormat:@"%@",str];
  4.    
  5.     for(int i;i<strMu.length;i++)
  6.     {
  7.         char temp = [strMu characterAtIndex:i];
  8.         if(temp>='0'&&temp<='9')
  9.         {
  10.             [strMu deleteCharactersInRange:NSMakeRange(i, 1)];
  11.             i--;
  12.         }
  13.     }
  14.     return strMu;
  15. }
复制代码



作者: 我说你是个逗比    时间: 2014-10-7 11:04
songxing10000 发表于 2014-10-7 09:27

嗯,你返回的是一个可变字符串,可是题目要求,调用函数返回的是不可变字符串
作者: 小叶子    时间: 2014-10-7 11:12
  1. SMutableString *str=[NSMutableString stringWithString:@"qwe1234sdf3ri4I3k2k323jkhk"];
  2.     for (int i=0; i<[str length]; i++) {
  3.         unichar c=[str characterAtIndex:i];
  4.         if (c>='0'&&c<='9') {
  5.             [str deleteCharactersInRange:NSMakeRange(i, 1)];
  6.             i=i-1;}
  7.     }
  8.     NSLog(@"%@",str);
复制代码
~~~~准备吃饭.

作者: 小叶子    时间: 2014-10-7 11:18
本帖最后由 小叶子 于 2014-10-7 11:19 编辑

~~~~~~~~~~~~~~~~~~
作者: songxing10000    时间: 2014-10-7 11:24
我说你是个逗比 发表于 2014-10-7 11:04
嗯,你返回的是一个可变字符串,可是题目要求,调用函数返回的是不可变字符串 ...

转一下就行了,一个方法就转了
作者: Jack-xie    时间: 2014-10-7 12:12
好羡慕你哦!加了技术分。
作者: ★彬★卍囧神    时间: 2014-10-7 22:54
给你说种思路你可以去试试,把它定义成可变字符串,然后遍历字符串每个元素,然后if最后使用dele删除方法
作者: 我说你是个逗比    时间: 2014-10-8 11:14
★彬★卍囧神 发表于 2014-10-7 22:54
给你说种思路你可以去试试,把它定义成可变字符串,然后遍历字符串每个元素,然后if最后使用dele删除方法 ...

嗯,好的,谢谢版大
作者: 我说你是个逗比    时间: 2014-10-8 11:16
小叶子 发表于 2014-10-7 11:12
~~~~准备吃饭.

之前我不知道copy,现在知道了,感觉很方便,谢谢
作者: 米匠    时间: 2014-10-8 11:36
赞。。。。。。。




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