zoukankan      html  css  js  c++  java
  • .NET正则表达式编程示例

    我们通过一个例子来讲解正则表达式编程,先看题:

    题目:统计一个txt文档中单词个数及每个单词的出现次数(老题老被人提)

    思路:我们统计文档就是解析一个字符串,所以在解析字符串的过程中势必要对字符串内容进行筛选,单词是由字母组成的,所以这就成为筛选字符的条件,而限定条件就需要用正则表达式书写,通过限定条件将字符串分割,将每个单词存入一个ArrayList中,并通过运算这个ArrayList,将单词及出现次数存入HashTable中,然后显示,即完成题目要求。

    看代码:

    1.读入字符串

    StreamReader mysr = new StreamReader("F:\\test\\123.txt");
    string str = mysr.ReadToEnd();

     2.字符串的截取

    public ArrayList CountWord(string str)
            {
    
                ArrayList alc = new ArrayList();
                Regex reg = new Regex("[^a-zA-Z]");
                string[] strs = reg.Split(str);
                foreach (string ma in strs)
                {
                    if (ma != "")
                    {
                        alc.Add(ma);
                    }
                }
    
                return alc;
            }

    我们需要使用Regex类,在新建对象时需要将正则表达式作为参数传递给Regex对象。然后使用Split方法,它的作用是按照正则表达式所匹配的字符的位置,将字符串在此位置截断,这就是[^a-zA-Z]的原因,然后再对字符串的截取内容进行筛选,去掉空白符,存入ArrayList中。

    3.对Arraylist的内容进行统计,达到题目的需求

    int k = alc.Count;
                int m = 1;
                int s = 1, j = 0;
                Hashtable ht = new Hashtable();
                while (k != 0)
                {
                    while (j != k)
                    {
                        for (; s < k; s++)
                        {
                            if (alc[j].ToString() == alc[s].ToString())
                            {
                                alc.RemoveAt(s);
                                m++;
                                k = alc.Count;
                            }
                        }
                        ht.Add(alc[j], m);
                        alc.RemoveAt(j);
                        k = alc.Count;
                        m = 1;
                        s = 1;
                    }
    
                }
                foreach (DictionaryEntry dic in ht)
                    Console.WriteLine("{0}:{1}", dic.Key, dic.Value);
                Console.ReadKey();
            }
  • 相关阅读:
    【Java 学习笔记】 问题列表
    【Weka】Weka聚类
    【MFC 学习笔记】MFC BUG
    【Java 学习笔记】 变量转换
    【MFC 学习笔记】CheckListBox
    Http Handler 介绍
    C# HttpWebRequest可断点上传,下载文件;SOCKET多线程多管道可断点传送大文件
    SQL Server 2005 常用数据类型详解
    浅谈OCR之Tesseract
    [理财产品] 招行新的日日金8158
  • 原文地址:https://www.cnblogs.com/JhoneLee/p/3121395.html
Copyright © 2011-2022 走看看