黑马程序员技术交流社区
标题:
谁来帮我看看这代码哪出问题了。
[打印本页]
作者:
Moebius
时间:
2014-7-26 03:56
标题:
谁来帮我看看这代码哪出问题了。
//删除空格对象方法实现
- (NSString *) spaceDelete
{
//记录开头几个空格
int m = 0;
//记录结尾处几个空格
int n = 1;
//查看开头
for (int i = 0; i < self.length && [self characterAtIndex:i] !=32; i++)
{
if ([self characterAtIndex:i] == 32) {
m++;
}
}
//查看结尾
for (NSUInteger i = self.length-1; i > 0 && [self characterAtIndex:i] !=32; i--)
{
if ([self characterAtIndex:i] == 32) {
n++;
}
}
//确定新字符串的范围
NSRange r = {m , self.length-n};
//[self substringWithRange:r]截取这个范围内的字符
NSString *str = [self substringWithRange:r];
return str;
}
复制代码
作用是删除字符串前面与后面的空格,编译没问题,运行也没问题,但是就是不删除。
作者:
ofVv
时间:
2014-7-26 07:51
楼主,两个for循环的判断条件与其内部的if语句条件是冲突的。
作者:
huangqiwa
时间:
2014-7-26 08:30
ofVv 发表于 2014-7-26 07:51
楼主,两个for循环的判断条件与其内部的if语句条件是冲突的。
正确 !
作者:
且行且惜
时间:
2014-7-26 09:07
如果是空格了就进不去了,你没看你的判断条件嘛!又问题,应该在内部判断,如果不是空格了,就用break跳出循环!!!
作者:
Moebius
时间:
2014-7-26 10:22
for (int i = 0; i < self.length ; i++)
{
if ([self characterAtIndex:i] == 32) {
m++;
}
else break;
}
//查看结尾
for (NSUInteger i = self.length-1; i > 0 ; i--)
{
if ([self characterAtIndex:i] == 32) {
n++;
}
else break;
}
复制代码
我修改成这样了,可是字符串后面的空格不删除,前面的删除,这是怎么回事?
作者:
Moebius
时间:
2014-7-26 16:30
终于找到问题所在了
NSRange r = {m , self.length-n}; 这句应该改成
NSRange r = {m , self.length-n-m};
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2