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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© liuyinglong 中级黑马   /  2013-11-5 03:30  /  2072 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如果从字符串中筛选出所有的数字,有那些方法可以实现啊,想了好几个代码都不是最精简的,有人说用正则,不过现在还没有学习正则,不用正则的话怎样最简单最快速呢?

6 个回复

正序浏览
亲,有同学给你回答问题了,要设置成已解决呀,这样才能加分
回复 使用道具 举报
//先将字符串转换成字符数组
            string str = "abc1d2e3f4j5k66pp";
            char[] chs = str.ToCharArray();
            //声明一个list<char>类型的泛型集合
            List<char> list = new List<char> { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
            //z逐个判断数组chs的元素是否在集合中,是就输出,不是就不输出
            for (int i = 0; i < chs.Length; i++)
            {
                if (list.Contains(chs[i]))           //集合中有chs[i],chs[i]是数字,输出
                {
                    Console.Write(chs[i] + "\t");
                }
            }
            Console.ReadKey();
回复 使用道具 举报
凤凰涅槃 发表于 2013-11-5 09:28
不知道下面这个方法是不是最简单的,分享一下大家看看吧。。。

我是要找到到有哪些数字  不是获取到数字的个数  不过可以从你这个上面改进下  把获取到的加入进集合里
回复 使用道具 举报
不知道下面这个方法是不是最简单的,分享一下大家看看吧。。。
  1. string str = "abc1d2e3f4j5k66pp";
  2.             char[] chars = str.ToCharArray();
  3.             int digit = 0;
  4.             for (int i = 0; i < chars.Length; i++)
  5.             {
  6.                 if (chars[i] >= '0' && chars[i] <= '9')
  7.                 {
  8.                     digit++;
  9.                 }
  10.             }
  11.             Console.WriteLine(digit);//运行结果:7
  12.             Console.ReadKey();
复制代码
回复 使用道具 举报
循环遍历字符串,判断每个字符是否大于'0'小于'9',不用转换类型,直接比较字符大小即可。
回复 使用道具 举报
亲 可以考虑一下tryparse  循环判断  tryparse 有true和false两个值 为true就是数字  那么你就提取出来
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马