黑马程序员技术交流社区

标题: 实现函数NSString * stringWithoutNum(NSString *str)删除字符串数字 [打印本页]

作者: Harvey_ios    时间: 2015-6-11 13:44
标题: 实现函数NSString * stringWithoutNum(NSString *str)删除字符串数字
本帖最后由 Harvey_ios 于 2015-6-11 13:59 编辑

我的问题:能实现单个数字的删除,例如 "1a2b3c4d5e"输出结果为:




如果是连续的数字,则会出现数字不能被完全删除的情况:"1a243423bc3de3f4",结果如下:


请帮忙指出我思维的局限性,以及如何学习提高,谢谢!




我的代码:
  1. //3.实现函数NSString * stringWithoutNum(NSString *str);
  2. //删除字符串str的所有数字

  3. #import <Foundation/Foundation.h>

  4. // 实现删除数字
  5. NSString * stringWithoutNum(NSString *str)
  6. {
  7.     NSMutableString *str1 = [NSMutableString stringWithFormat:@"%@",str];
  8.    
  9.     for (int i = 0; i < str1.length; i++) {
  10.         
  11.         // 取出字符串中每个字符
  12.         unichar c = [str1 characterAtIndex:i];
  13.         
  14.         // 判断字符是否是数字
  15.         if (c >= '0' && c <= '9') {
  16.       
  17.            [str1 deleteCharactersInRange:NSMakeRange(i, 1)]; // 删除数字
  18.             
  19.         }
  20.     }
  21.    
  22.     return str1;

  23. }

  24. int main(int argc, const char * argv[]) {
  25.     @autoreleasepool {
  26.         
  27.         NSString *str = [NSString stringWithFormat:@"1a2b3c4d5e"]; // 定义一个字符串并初始化
  28.       
  29.         NSString *str1 = stringWithoutNum(str); // 调用删除数字函数
  30.       
  31.         NSLog(@"%@",str1);
  32.     }
  33.     return 0;
  34. }
复制代码





作者: 晗修    时间: 2015-6-11 17:00
比如a423b
在i=1的时候删除了数字4 然后字符串变成了a23b
下一次i=2 ,但是数字2已经前移了一位。
解决方法有两个
1:当删除数字时 i--
2:两个字符串一个用来判断一个用来删除
作者: Harvey_ios    时间: 2015-6-13 20:10
晗修 发表于 2015-6-11 17:00
比如a423b
在i=1的时候删除了数字4 然后字符串变成了a23b
下一次i=2 ,但是数字2已经前移了一位。

谢谢,第一个答案,我理解了,第二个方法我要想想




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