黑马程序员技术交流社区

标题: 从文本中提取数字! [打印本页]

作者: 袁振龙    时间: 2013-4-20 16:45
标题: 从文本中提取数字!
本帖最后由 袁振龙 于 2013-4-20 19:05 编辑

这样只能提取出来一个22,后面的数字怎么提取出来。

1.jpg (22.7 KB, 下载次数: 56)

1.jpg

作者: 崔宏奎    时间: 2013-4-20 17:30
string str = Substring(x,y);
意思就是从第x元素开始(x从0开始),取y个长度的string.
取出来的是string类型,如果需要计算,还需要转换一下Convert.ToInt32(str);
作者: 陈帅    时间: 2013-4-20 17:36
  string str = "大家好,我叫某某,今年22岁,身高178,体重55";
            for (int i = 0; i < str.Length; i++)
            {
                try
                {
                    int n = Convert.ToInt32((str[i]).ToString());
                    Console.WriteLine(n);
                }
                catch
                {

                }
            }      
Console.ReadKey();
数字都出来了~~ 不过是单个的~~
作者: 林东枫    时间: 2013-4-20 18:26
我觉得 如果 字符串里面的 数字 是知道具体的位置的话,就按照你那种写法,直接把他们获取出来;
如:
  1. string str = "大家好,我是小龙,我22岁了,身高178,体重55公斤!";
  2.             string str1 = str.Substring(10,2);
  3.             string str2 = str.Substring(17,3);
  4.             string str3 = str.Substring(23,2);
复制代码

作者: 陈帅    时间: 2013-4-20 18:33
正则表达式的方法是
  1.    
  2. string str = "大家好,我叫某某,今年22岁,身高178,体重55";
  3. Regex reg = new Regex(@"\d+");
  4.             MatchCollection m = reg.Matches(str,0);
  5.             
  6.             
  7.                 foreach (var item in m)
  8.                 {
  9.                     Console.WriteLine(item);
  10.                 }
  11.             
  12.             Console.ReadKey();
复制代码

作者: 陈帅    时间: 2013-4-20 18:45
当然也可以,直接一个一个截取~
  1. Console.WriteLine(str.Substring(11, 2) + str.Substring(17,3) + str.Substring(23,2));
复制代码

作者: 袁振龙    时间: 2013-4-20 19:04
陈帅 发表于 2013-4-20 18:45
当然也可以,直接一个一个截取~

谢谢了!
作者: 杞文明    时间: 2013-4-20 20:41
类似的字符串操作问题,用正则表达式,是做好的选择!  提取用Matches方法就可以搞定了,可以这么做
  1. static void Main(string[] args)
  2. {
  3.     //要操作的字符串
  4.     string str = "大家好,我是小龙,我22岁了,身高178,体重55公斤!";

  5.    //用到的 判别的式子
  6.    // \d 表示0-9之间的一个数,+ 表示前面的字符至少出现一次
  7.    // \d+ 表示0-9的字符至少是一个
  8.    string regex = @"\d+";

  9.   //下面这句才是提取,重点是下面这句,其他的都是陪衬而已,
  10.   MatchCollection mc = Regex.Matches(str,regex);

  11.    //下面的作用是循环遍历输出提取到的数字字符串
  12.    foreach (Match item in mc)
  13.    {
  14.        Console.WriteLine(item);
  15.    }
  16.    Console.ReadKey();
  17. }
复制代码





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