zoukankan      html  css  js  c++  java
  • 原创:QQ群发言统计

    源码下载

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Text.RegularExpressions;
    using System.IO;

    namespace QQGroupCount
    {
        
    public partial class QQGroupCounter : Form
        {
            
    public QQGroupCounter()
            {
                InitializeComponent();
            }

            
    private void btnBroswer_Click(object sender, EventArgs e)
            {
                openFileDialog1.ShowDialog();
            }
            
    private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
            {
                txtFilePath.Text 
    = openFileDialog1.FileName;
                btnCount.Focus();
            }

            
    private void btnCount_Click(object sender, EventArgs e)
            {
                StreamReader sr 
    = new StreamReader(txtFilePath.Text);
                CountingContent(sr.ReadToEnd());
                sr.Dispose();
            }

            
    void CountingContent(string content)
            {
                
    string pattern = @"\d{4}[\-|/]\d{1,2}[\-|/]\d{1,2} \d{1,2}:\d{1,2}:\d{1,2} (.[^\(\)\<\>]*)(\(\d+\)|\<.[^\<\>]*\>)";
                MatchCollection mc 
    = Regex.Matches(content, pattern, RegexOptions.Multiline);
                List
    <QQUser> list = new List<QQUser>();

                
    string qq, name;
                
    foreach (Match m in mc)
                {
                    qq 
    = m.Groups[2].Value.Replace('(''\0').Replace(')''\0').Replace('<''\0').Replace('>''\0');
                    name 
    = m.Groups[1].Value;

                    QQUser user 
    = list.Find(u => u.QQ == qq);
                    
    if(user==null)
                        user 
    = list.Find(u => u.NickName == name);
                    
    if (user == null)
                    {
                        user 
    = new QQUser();
                        user.QQ 
    = qq;
                        user.NickName 
    = name;
                        user.Count 
    = 1;
                        list.Add(user);
                    }
                    
    else
                    {
                        user.Count
    ++;
                        user.NickName 
    = name;
                    }
                }
                list
    =list.OrderByDescending(u=>u.Count).ToList();
                
    int i=0;
                
    foreach(QQUser user in list)
                {
                    i
    ++;
                    user.Rank 
    = i;
                }
                dataGridView1.DataSource 
    = list;
            }

        }

        
    public class QQUser 
        {
            
    public int Rank { getset; }
            
    public string NickName { getset; }
            
    public string QQ { getset; }
            
    public int Count { getset; }
        }
    }

  • 相关阅读:
    【转载】浮点数在内存中的存储格式
    流媒体完全手册
    Windows Mobile 5.0 SDK 下载地址
    实时传输协议 RTP
    JDK环境变量配置
    扩展Windows Mobile模拟器存储空间的方法
    WinSock学习笔记
    实时传输协议 RTCP
    NHibernate从入门到精通系列(4)——持久对象的生命周期(上)
    实时流协议 RTSP
  • 原文地址:https://www.cnblogs.com/mad/p/1467312.html
Copyright © 2011-2022 走看看