黑马程序员技术交流社区

标题: 求大神帮帮我实现这个函数 [打印本页]

作者: smile辉煌    时间: 2014-11-28 17:03
标题: 求大神帮帮我实现这个函数
求实现函数NSString * stringWithoutNum(NSString *str);
删除字符串str的所有数字,用OC中Foundation的知识怎么实现这个函数
作者: weizhang00    时间: 2014-11-28 17:14
要么用可变string,要么就是挨个检查后不是数字就加入到char数组中,然后转为nsstring返回
作者: smile辉煌    时间: 2014-11-28 17:36
weizhang00 发表于 2014-11-28 17:14
要么用可变string,要么就是挨个检查后不是数字就加入到char数组中,然后转为nsstring返回 ...

可变string怎么实现,先把传进去的string遍历出来再,然后调用可变string的删除字符的方法可行吗
作者: weizhang00    时间: 2014-11-28 17:39
可变字符串NSMutableString,自带有删除方法
作者: smile辉煌    时间: 2014-11-28 17:44
weizhang00 发表于 2014-11-28 17:39
可变字符串NSMutableString,自带有删除方法

自带了什么删除方法,是deleteCharactersInRang:这个方法吗
作者: weizhang00    时间: 2014-11-28 17:50
smile辉煌 发表于 2014-11-28 17:44
自带了什么删除方法,是deleteCharactersInRang:这个方法吗

嗯,这个是范围删除,单删除也可以用,不过麻烦点,要传两个参,可以直接返回
作者: weizhang00    时间: 2014-11-28 17:53
我建议你用char重组
作者: 从今以后    时间: 2014-11-28 18:17
网上看的
  1. #import <Foundation/Foundation.h>

  2. NSString * stringWithoutNum(NSString *str) {
  3.    
  4.     // 从字符串创建一个字符集 是0-9的数字
  5.     NSCharacterSet *numberSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
  6.    
  7.     // 用这个集合里的字符分割字符串为数组元素 然后用@""空字符连接成字符串
  8.     NSString *newStr = [[str componentsSeparatedByCharactersInSet:numberSet] componentsJoinedByString:@""];
  9.    
  10.     return newStr;
  11. }

  12. int main() {
  13.     @autoreleasepool {
  14.         
  15.         NSString *str = @"去61掉641所有数416字1665吧";
  16.         NSString *str2 = stringWithoutNum(str);
  17.         NSLog(@"%@", str2);
  18.     }
  19.     return 0;
  20. }
复制代码

作者: smile辉煌    时间: 2014-11-28 18:22
weizhang00 发表于 2014-11-28 17:53
我建议你用char重组

这个是MJ老师基础视频中源代码的0812里的作业里的题,所以我想是用foundation来实现,可是好像视频里没讲你说的那个方法
作者: smile辉煌    时间: 2014-11-28 18:25
从今以后 发表于 2014-11-28 18:17
网上看的

这都没学过啊,谢谢啦
作者: weizhang00    时间: 2014-11-28 19:21
smile辉煌 发表于 2014-11-28 18:22
这个是MJ老师基础视频中源代码的0812里的作业里的题,所以我想是用foundation来实现,可是好像视频里没讲 ...

所以,我建议你用char重组方法进行实现
foundation是框架,框架中包含了可变字符串,但是如果老师没讲
我就建议你用char重组,这是c语言的
因为nsstring是不可变的,所以无法实现你说的删除,不过你的思维不要被禁锢在删除二字中
抽出非数字再组合一个字符串就可以了




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