黑马程序员技术交流社区
标题:
3.实现函数NSString * stringWithoutNum(NSString *str);删除字符串str的所有数字
[打印本页]
作者:
歧路
时间:
2015-1-1 17:07
标题:
3.实现函数NSString * stringWithoutNum(NSString *str);删除字符串str的所有数字
#import <Foundation/Foundation.h>
NSString * stringWithoutNum(NSString *str);
int main(int argc, const char * argv[]) {
@autoreleasepool {
//3.实现函数NSString * stringWithoutNum(NSString *str);删除字符串str的所有数字
NSString *str = @"hu1f43d5f6dfrgr";
NSString *strnew = stringWithoutNum(str);
NSLog(@"%@", strnew);
}
return 0;
}
NSString * stringWithoutNum(NSString *str)
{
NSMutableString *str1 = [NSMutableString stringWithString:str];
for (int i =0; i< str.length; i++) {
unichar c = [str characterAtIndex:i];
NSRange range = NSMakeRange(i, 1);
if (c >= '0' && c <= '9') {
[str1 deleteCharactersInRange:range];
}
}
NSString *newstr = [NSString stringWithString:str1];
return newstr;
}
运行不对,求大神
作者:
从今以后
时间:
2015-1-1 18:14
NSRange range = NSMakeRange(i, 1);
这步算出的是相对于str的位置,但是str1在删除字符中长度逐渐变短,这个位置就不适用str1了。
把for循环开始所有str改成str1,也就是所有计算相对于str1进行,然后每次如果删除了字符就把i - 1,抵消str1变短的效果。
for (int i = 0; i < str1.length; i++) {
unichar c = [str1 characterAtIndex:i];
NSRange range = NSMakeRange(i, 1);
if (c >= '0' && c <= '9') {
[str1 deleteCharactersInRange:range];
--i;
}
}
复制代码
作者:
歧路
时间:
2015-1-1 23:03
从今以后 发表于 2015-1-1 18:14
NSRange range = NSMakeRange(i, 1);
这步算出的是相对于str的位置,但是str1在删除字符中长度逐渐变短,这 ...
大神好厉害,可是自己做的时候想不到啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2