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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李奔 中级黑马   /  2013-6-10 16:58  /  2279 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李奔 于 2013-6-11 21:03 编辑

题目:从一段文本中提取出所有的数字。
谢谢参与!

9 个回复

倒序浏览
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public static decimal GetNumber( )
{
     str = TextBox1.Text;
    decimal result = 0;
    if (str != null && str != string.Empty)
    {
         str = Regex.Replace(str, @"[^\d.\d]", "");// 正则表达式剔除非数字字符(不包含小数点.)
         if (Regex.IsMatch(str, @"^[+-]?\d*[.]?\d*$"))// 如果是数字,则转换为decimal类型
         {
              result = decimal.Parse(str);
         }
    }
    return result;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

点评

正则表达式,太强悍了!  发表于 2013-6-10 20:03
回复 使用道具 举报
//假设该文本为str
            string str=@"黑马程序员训练营基础测试1、 求1-100之间的偶数和2、 分别让用户输入用户名和密码,如果用户名不为admin,则提示“用户名不存在,如果用户名为admin,密码为88888888,则提示登录成功,否则提示“密码错误。3、 已知一个int数组, 编程从数组中获取最大数。4、 打印100次欢迎您来黑马训练营学习如果张三的语文成绩大于90并且音乐成绩大于80,则奖励50元.语文成绩等于100并且音乐成绩大于70,则奖励100元.";

            MatchCollection matches = Regex.Matches(str, "[0-9]+");       //用 MatchCollection 类型的变量存储匹配到的字符串
            foreach (Match mc in matches)                                 //遍历输出得到的字符串
            {
                Console.WriteLine(mc.Value);
            }
            Console.ReadKey();

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
真心弄不明白正则表达式啊……
  1. static void Main(string[] args)
  2.         {
  3.             string str = "打印100次欢迎您来黑马训练营学习如果张三的语文成绩大于90并且音乐成绩大于80,则奖励50元.语文成绩等于100并且音乐成绩大于70,则奖励100元.";
  4.             Console.WriteLine("原始文章是{0}",str);
  5.             int i = 0;
  6.             for (i = 0; i < str.Length;)
  7.             {
  8.                 if (str[i] >= '0' && str[i] <= '9')//数字的话保留
  9.                 {
  10.                     i++;
  11.                   
  12.                 }
  13.                 else
  14.                 {
  15.                     str = str.Remove(i, 1);//如果不是0到9的数字就把这个字符删掉。
  16.                     
  17.                 }
  18.             }
  19.             Console.WriteLine("提取的数字是{0}",str);
  20.             Console.ReadKey();

  21.         }
复制代码

提取数字.png (63.8 KB, 下载次数: 0)

提取数字.png

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 haxyek 于 2013-6-11 10:21 编辑
  1.         static void Main(string[] args)
  2.         {
  3.             string str="打印100次欢迎您来黑马训练营学习如果张三的语文成绩大于90并且音乐成绩大于80,则奖励50元.语文成绩等于100并且音乐成绩大于70,则奖励100元.";
  4.             int[] outstr=new int[str.Length];
  5.             int num;
  6.             int j = 0;
  7.             

  8.             for (int i = 0; i < str.Length; i++) {

  9.                 if (int.TryParse(str[i].ToString(), out num))       //将转换成功的赋给num,  其实也可以判断是否大于等于0,小于10
  10.                 {
  11.                     outstr[j] = num;                                //将num赋到输出的数组。
  12.                     j++;
  13.                 }

  14.             }
  15.             for (int i = 0; i <= j; i++)
  16.             {
  17.                 Console.Write(outstr[i]);
  18.             }
  19.             Console.Read();
  20.         }
复制代码
虽然输出了,但是不能把能看懂的数字分开,比如  100,90……。。这样。。 还有就是,outstr[]数组有点大,,求个思路,
回复 使用道具 举报
大家做的都不错,学习了!
顺便也我的贴上吧!
  1.             Console.WriteLine("请输入一段文本信息:");
  2.             //接受文本信息
  3.             string szInput = Console.ReadLine();
  4.             //遍历文本信息
  5.             for (int i = 0; i < szInput.Length; i++)
  6.             {
  7.                 //检索每一个字符
  8.                 char ele = szInput.ElementAt(i);
  9.                 //判断字符是否为数字
  10.                 if (ele >= '0' && ele <= '9')
  11.                 {
  12.                     //输出数字
  13.                     Console.Write(ele+"  ");
  14.                 }
  15.             }
  16.             Console.ReadKey();
复制代码
回复 使用道具 举报
  1. class Program
  2. {
  3.    /*
  4.     7、 从一段文本中提取所有的数字
  5.   */
  6.    static void Main(string[] args)
  7.    {
  8.      //用于保存提取到的数字
  9.     string str = "";
  10.    //读取文本
  11.     string txt = File.ReadAllText("7.txt", Encoding.Default);
  12.    //使用正则表达式提取数字
  13.     MatchCollection mc = Regex.Matches(txt, @"\d+");
  14.     //遍历
  15.    foreach (Match item in mc)
  16.    {
  17.     str += item.Value.ToString()+"\t";
  18.   }
  19.    Console.WriteLine("原始文本:\n{0}", txt);
  20.    Console.WriteLine("\n\n提取到的数字:\n{0}", str);
  21.    Console.ReadLine();
  22.   }
  23. }
复制代码
回复 使用道具 举报
string str = "题目:从一段文本中提取出所有的数字:123456789。";
            int i = 0;
            for (i = 0; i < str.Length;)
            {
                if ( str[i] <= '9')
                {
                    i++;
                  
                }
                else
                {
                    str = str.Remove(i, 1);
                    
                }
            }
            Console.WriteLine(str);
            Console.ReadKey();
回复 使用道具 举报
  1. <div class="blockcode"><blockquote><p>static void Main(string[] args)
  2.         {
  3.             //从一段文本中提取出所有的数字   使用正则表达式很简单吧~~~
  4.         string str = "11哈哈哈撒范德萨111水电费的省份145发生的发生789";
  5.             string regNum = @"\d+";
  6.             MatchCollection mathes = Regex.Matches(str, regNum);
  7.             foreach (Match item in mathes)
  8.             {
  9.                 Console.Write(item.Value+"\t");
  10.             }
  11.             Console.ReadKey();
  12.         }</p>
  13. <p>8期的朋友们一起努力吧~~~~</p>
复制代码

2013-06-12_102622.png (14.55 KB, 下载次数: 0)

结果

结果
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马