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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Moebius 中级黑马   /  2014-7-26 03:56  /  1341 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. //删除空格对象方法实现
  2. - (NSString *) spaceDelete
  3. {
  4.     //记录开头几个空格
  5.     int m = 0;
  6.    
  7.     //记录结尾处几个空格
  8.     int n = 1;
  9.    
  10.     //查看开头
  11.     for (int i = 0; i < self.length && [self characterAtIndex:i] !=32; i++)
  12.     {
  13.         if ([self characterAtIndex:i] == 32) {
  14.             m++;
  15.         }
  16.     }
  17.    
  18.     //查看结尾
  19.     for (NSUInteger i = self.length-1; i > 0 && [self characterAtIndex:i] !=32; i--)
  20.     {
  21.         if ([self characterAtIndex:i] == 32) {
  22.             n++;
  23.         }
  24.     }
  25.    
  26.     //确定新字符串的范围
  27.     NSRange r = {m , self.length-n};
  28.    
  29.     //[self substringWithRange:r]截取这个范围内的字符
  30.    
  31.     NSString *str = [self substringWithRange:r];
  32.    
  33.     return str;
  34. }
复制代码



作用是删除字符串前面与后面的空格,编译没问题,运行也没问题,但是就是不删除。

5 个回复

倒序浏览
ofVv 来自手机 初级黑马 2014-7-26 07:51:25
沙发
楼主,两个for循环的判断条件与其内部的if语句条件是冲突的。
回复 使用道具 举报
ofVv 发表于 2014-7-26 07:51
楼主,两个for循环的判断条件与其内部的if语句条件是冲突的。

正确 !
回复 使用道具 举报
如果是空格了就进不去了,你没看你的判断条件嘛!又问题,应该在内部判断,如果不是空格了,就用break跳出循环!!!
回复 使用道具 举报
  1.     for (int i = 0; i < self.length ; i++)
  2.     {
  3.         if ([self characterAtIndex:i] == 32) {
  4.             m++;
  5.         }
  6.         else break;
  7.     }
  8.    
  9.     //查看结尾
  10.     for (NSUInteger i = self.length-1; i > 0 ; i--)
  11.     {
  12.         if ([self characterAtIndex:i] == 32) {
  13.             n++;
  14.         }
  15.         else break;
  16.     }
复制代码



我修改成这样了,可是字符串后面的空格不删除,前面的删除,这是怎么回事?
回复 使用道具 举报
终于找到问题所在了
NSRange r = {m , self.length-n};  这句应该改成

NSRange r = {m , self.length-n-m};
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马