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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© YKS 中级黑马   /  2014-7-18 22:53  /  1556 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

取出字符串“u49a-78ui-3gy68-3r7t”中的数字部分,组成一个新的字符串输出。
字符串这节没学好,求高人指点一下。

8 个回复

倒序浏览
ASCII中数字(0~9)的编码序号是48~57 ,你加个循环语句控制只输出数字例如
  1. for(int i=0;ch[i]>=48&&ch[i]<=57;i++)
  2. {
  3. //body
  4. }
复制代码

这样就好了
回复 使用道具 举报
  1. // OC

  2. #import <Foundation/Foundation.h>

  3. int main()
  4. {
  5.     @autoreleasepool {
  6.         
  7.         NSString *str = @"u49a-78ui-3gy68-3r7t";
  8.         
  9.         NSMutableString *newStr = [NSMutableString string];
  10.         
  11.         
  12.         for (int i = 0; i<str.length; i++) {
  13.             
  14.             // 取出索引的字符
  15.             char c = [str characterAtIndex:i];
  16.             
  17.             // 判断
  18.             if ( c >= '0' && c<= '9' ) {
  19.                
  20.                 [newStr appendFormat:@"%c", c];
  21.             }

  22.         }
  23.         
  24.         NSLog(@"%@", newStr);

  25.     }
  26.    
  27.    
  28.     return 0;
  29. }


  30. // C语言
  31. #include <stdio.h>
  32. #include <string.h>

  33. int main()
  34. {
  35.     char s[100] = "u49a-78ui-3gy68-3r7t";
  36.    
  37.     size_t length = strlen(s);
  38.    
  39.     char newS[100];
  40.    
  41.     int c = 0;
  42.    
  43.     for (int i = 0; i<length; i++) {
  44.         if (s[i] >= '0' && s[i] <= '9') {
  45.             newS[c] = s[i];
  46.             c++;
  47.         }
  48.     }
  49.    
  50.     printf("%s", newS);
  51.    
  52.    
  53.     return 0;
  54. }
复制代码
回复 使用道具 举报 1 0
楼上真是神人也
回复 使用道具 举报
本帖最后由 istream 于 2014-7-19 14:54 编辑

用指针一个一个去的测试,测试范围是否是在'0'到'9'之间,取出即可,无须去记字符0到9的ASCII码。
回复 使用道具 举报
一十二。 来自手机 中级黑马 2014-7-19 18:15:29
地板
貌似不需要记只要吧48写成'0' 这样就可以了
回复 使用道具 举报
一十二。 来自手机 中级黑马 2014-7-19 18:16:57
7#
貌似不需要记只要吧48写成'0' 这样就可以了
回复 使用道具 举报
YKS 中级黑马 2014-7-20 17:09:49
8#
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马