黑马程序员技术交流社区

标题: 分享一道刚才做到的题目:删除字符串首尾的空格 [打印本页]

作者: wxy19891017    时间: 2015-4-23 21:53
标题: 分享一道刚才做到的题目:删除字符串首尾的空格

  1. /*
  2. 去除字符串两端空格(比如@”  1235 45 ”调用方法后返回@”1235 45”)
  3. */

  4. #import "NSString+DeleteSpace.h"

  5. @implementation NSString (DeleteSpace)

  6. - (NSString *)deleteSpace
  7. {
  8.     //将调用方法的字符串对象转换成可变字符串
  9.     NSMutableString *mtstr = [NSMutableString stringWithFormat:@"%@",self];
  10.    
  11.     int i = 0;
  12.    
  13.     //判断首元素,首元素如果是空格,将一直执行循环体,直到遇到break退出循环
  14.     while ([mtstr characterAtIndex:0] == ' ')
  15.     {
  16.         //删除首元素的空格
  17.         [mtstr deleteCharactersInRange:NSMakeRange(0, 1)];
  18.         //指向下一元素
  19.         i++;
  20.         //如果下一元素依然是空格,便会执行循环体了
  21.         if ([mtstr characterAtIndex:i] == ' ')
  22.         {
  23.             [mtstr deleteCharactersInRange:NSMakeRange(i, 1)];
  24.         }
  25.         else
  26.         {
  27.             break;//遇到不是空格,退出循环
  28.         }
  29.     }
  30.    
  31.     //末尾元素的位置
  32.     i = mtstr.length -1;
  33.     while ([mtstr characterAtIndex:(mtstr.length - 1)] == ' ')
  34.     {
  35.         //从末尾开始删除空格元素
  36.         [mtstr deleteCharactersInRange:NSMakeRange(mtstr.length - 1, 1)];
  37.         i--;
  38.         if ([mtstr characterAtIndex:i] == ' ')
  39.         {
  40.             [mtstr deleteCharactersInRange:NSMakeRange(i, 1)];
  41.         }
  42.         else
  43.         {
  44.             break;
  45.         }
  46.     }
  47.    
  48.     return  mtstr;
  49.    
  50. }

  51. @end
复制代码
虽然功能能够实现,但是我感觉代码还需要很大的优化,老感觉重复功能的代码不少,小白,欢迎大家指点,谢谢!

作者: ruihai    时间: 2015-5-4 10:09
楼主这是我写的
  1. #import "NSString+DeleteSpace.h"

  2. @implementation NSString (DeleteSpace)

  3. +(NSString *)deleteSpaceAtStartAndEnd:(NSString *)input {
  4.     // 返回字符串的范围
  5.     NSUInteger startLocation = 0;
  6.     NSUInteger endLocation = input.length - 1;
  7.     // 第一个非空字符作为头
  8.     while ([input characterAtIndex:startLocation] == ' ') {
  9.         startLocation++;
  10.     }
  11.     // 第一个非空字符作为尾
  12.     while ([input characterAtIndex:endLocation] == ' ') {
  13.         endLocation--;
  14.     }
  15.     // 得出substring的范围
  16.     return [input substringWithRange:NSMakeRange(startLocation, endLocation - startLocation + 1)];
  17. }
  18. @end
复制代码





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