2 audiohifi audiohifi 于 2016.04.05 23:28 提问

caozhy老师好,能否帮我解答一下

我遇到的问题是这样的,有一个文件夹,里面有很多文本文件:比如 张三.txt
李四.txt 王五.txt.....

每个文本文件的内容各不相同  但其中有一段结构大致相同  比如  张三.txt有这段内容,这段内容前面还有其他内容,我需要截取这段内容,其它文本文件:比如李四  王五  都有这些内容  只是数据不一样,所在的行也不一样

下面是张三.txt要截取的内容
 #考试排名#                                                              

日期 参加考试人数 环比增减 环比变化(%)

─────────────────────────────────────
2015-05-30 55 -14 -30.65

2015-04-30 50 -17 -26.51

2015-03-31 45 12 11.21

我的想法是把每个人的这段数据读出来 并且用每个人的名字或者说文本文件的名称作为一个字段,把上面的读到datatable   或数据库中

![图片说明](http://img.ask.csdn.net/upload/201604/05/1459870080_494625.png)


希望老师帮我指点,该如何写,最好能给个事例,多谢老师
忘了说一下是c#呵呵

顺便贴一下比较详细的文本内容:

图片说明

 最后生成的datatable

    ![图片说明](http://img.ask.csdn.net/upload/201604/05/1459871098_871170.jpg)

7个回答

caozhy
caozhy   Ds   Rxr 2016.04.07 08:48
已采纳

图片说明

caozhy
caozhy   Ds   Rxr 2016.04.05 23:47

最好上传一个例子文件,这样好帮你看,不知道你的数据前是不是还有一个空格。另外以后提问不要带上我的名字。其实这里有很多比牛很多的专家,他们也可以解决你的问题。或许解决的更好。

audiohifi
audiohifi   2016.04.05 23:56

呵呵,不好意思,老师热情,道行高,所以就。。。 前面有很多空格呀什么的 就希望在◆考试排名◆这里开始截取

图片说明

这里可能是3行也可能是5行,后面就没有数据了

caozhy
caozhy 把数据上传到百度网盘,贴出地址
一年多之前 回复
audiohifi
audiohifi   2016.04.06 00:01

图片说明

老师 或者像这样的一个文本文件

caozhy
caozhy 贴图很难帮你看,因为空格,制表符看上去都是空白。
一年多之前 回复
audiohifi
audiohifi   2016.04.06 00:22

好的,老师http://pan.baidu.com/s/1o8kYCtG 您帮看看 ◆考试排名◆的行不一定是固定的

caozhy
caozhy   Ds   Rxr 2016.04.07 08:46
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.IO;
using System.Text.RegularExpressions;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Controls.Add(new DataGridView()
                {
                    Height = ClientSize.Height - 60,
                    Top = 10,
                    Width = ClientSize.Width - 20,
                    Left = 10,
                    Name = "dgv"
                });
            Controls.Add(new Button()
                {
                    Name = "btn",
                    Top = Controls["dgv"].Height + 20,
                    Left = 10,
                    Text = "Load"
                });
            Controls["btn"].Click += new EventHandler(btn_Click);
        }

        private void btn_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofn = new OpenFileDialog();
            if (ofn.ShowDialog() == DialogResult.OK)
            {
                var query = File.ReadAllLines(ofn.FileName).SkipWhile(x => !Regex.IsMatch(x, @"\d{4}\-\d{2}\-\d{2}"))
                    .Select(x => x.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries))
                    .Select(x => new { 日期 = x[0], 人数 = x[1], 增减 = x[2], 增减率 = x[3] }).ToList();
                var dgv = Controls["dgv"] as DataGridView;
                dgv.DataSource = query;
            }
        }
    }
}

audiohifi
audiohifi   2016.04.08 01:01

老师厉害,多谢,呵呵,没有老师干不了的

caozhy
caozhy 论坛里linq版版主,头像是加菲猫的,他是我的老师,我linq和他学了不少。
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!