A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 我说你是个逗比 中级黑马   /  2014-10-6 20:31  /  1506 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

实现一个函数 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 11:32
你这33行代码str = [str stringByReplacingCharactersInRange:range withString:@""];好像不对  发表于 2014-10-7 11:16

评分

参与人数 2技术分 +1 黑马币 +2 收起 理由
★彬★卍囧神 + 1
小叶子 + 2 很给力!

查看全部评分

13 个回复

正序浏览
赞。。。。。。。
回复 使用道具 举报

之前我不知道copy,现在知道了,感觉很方便,谢谢
回复 使用道具 举报
★彬★卍囧神 发表于 2014-10-7 22:54
给你说种思路你可以去试试,把它定义成可变字符串,然后遍历字符串每个元素,然后if最后使用dele删除方法 ...

嗯,好的,谢谢版大
回复 使用道具 举报
给你说种思路你可以去试试,把它定义成可变字符串,然后遍历字符串每个元素,然后if最后使用dele删除方法
回复 使用道具 举报
好羡慕你哦!加了技术分。
回复 使用道具 举报
我说你是个逗比 发表于 2014-10-7 11:04
嗯,你返回的是一个可变字符串,可是题目要求,调用函数返回的是不可变字符串 ...

转一下就行了,一个方法就转了
回复 使用道具 举报
本帖最后由 小叶子 于 2014-10-7 11:19 编辑

~~~~~~~~~~~~~~~~~~
回复 使用道具 举报
  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);
复制代码
~~~~准备吃饭.
回复 使用道具 举报

嗯,你返回的是一个可变字符串,可是题目要求,调用函数返回的是不可变字符串
回复 使用道具 举报
  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. }
复制代码


回复 使用道具 举报
ding...........
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马