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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© smile辉煌 中级黑马   /  2014-11-28 17:03  /  1399 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

求实现函数NSString * stringWithoutNum(NSString *str);
删除字符串str的所有数字,用OC中Foundation的知识怎么实现这个函数

10 个回复

倒序浏览
要么用可变string,要么就是挨个检查后不是数字就加入到char数组中,然后转为nsstring返回
回复 使用道具 举报
weizhang00 发表于 2014-11-28 17:14
要么用可变string,要么就是挨个检查后不是数字就加入到char数组中,然后转为nsstring返回 ...

可变string怎么实现,先把传进去的string遍历出来再,然后调用可变string的删除字符的方法可行吗
回复 使用道具 举报
可变字符串NSMutableString,自带有删除方法
回复 使用道具 举报
weizhang00 发表于 2014-11-28 17:39
可变字符串NSMutableString,自带有删除方法

自带了什么删除方法,是deleteCharactersInRang:这个方法吗
回复 使用道具 举报
smile辉煌 发表于 2014-11-28 17:44
自带了什么删除方法,是deleteCharactersInRang:这个方法吗

嗯,这个是范围删除,单删除也可以用,不过麻烦点,要传两个参,可以直接返回
回复 使用道具 举报
我建议你用char重组
回复 使用道具 举报
网上看的
  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. }
复制代码
回复 使用道具 举报
weizhang00 发表于 2014-11-28 17:53
我建议你用char重组

这个是MJ老师基础视频中源代码的0812里的作业里的题,所以我想是用foundation来实现,可是好像视频里没讲你说的那个方法
回复 使用道具 举报

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

所以,我建议你用char重组方法进行实现
foundation是框架,框架中包含了可变字符串,但是如果老师没讲
我就建议你用char重组,这是c语言的
因为nsstring是不可变的,所以无法实现你说的删除,不过你的思维不要被禁锢在删除二字中
抽出非数字再组合一个字符串就可以了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马