string rs = m.Groups[1].Value;
            string[] result = rs.Split(',');
            DataRow row = dt.NewRow();
            row[0] = result[0];
            row[1] = result[1];
//....
            dt.Rows.Add(row);

解决方案 »

  1.   

    string rs = m.Groups[1].Value
    确定rs的值是以,号分隔的。
      

  2.   

    数据是要一个一个字段绑定的吧,我今天做的时候是在foreach里面遍历出来,然后在给每个字段绑定的。
    或者你试试添加一条记录的时候用NewRow添加。看看行不行。
      

  3.   


    楼主的写法也没有错误。怀疑是result的长度=1
      

  4.   

    报索引超出了数据界限
    运行到row[1]=result[1];的时候
    string[] result = rs.Split(',');  一次就一个字段
      

  5.   

    string[] result = rs.Split(',');好像每次循环进来都是0
    这是怎么回事
      

  6.   

    刚没注意看,你那种写法可以,都在一列的原因是因为result的长度为1,你看运行到row[1]=result[1];的时候抱超出索引,也就是result[0]有数据,其他没数据,长度也就为1。
      

  7.   

    没有逗号! 那里是我自己加的! Split('')也行!我这里是想把数据放到数组中!
      

  8.   

    不是每次都有一条啊!   foreach (Match m in reg.Matches(str))//str  有多条数据啊 但是匹配后到m.Groups[1].Value;这里取的是匹配后的值  
      {
      string rs = m.Groups[1].Value;
      string[] result = rs;
      dt.Rows.Add(result);
      }
      

  9.   

    string rs = m.Groups[1].Value;
    每次循环到这里  都是一个值   
    dt.Rows.Add(result);这里 我是想把数据都放到DataTable中 
    然后再绑定gridview
      

  10.   

    好吧 看了你上帖的内容我知道你的意思了
    你是想抓取tr中的td内容,每个tr中有16个td
    想获取这16个然后绑定到gridview中?
      

  11.   

    是的!!
    tr有很多  没个tr中有16个td
      

  12.   

    在改那个正则,发现要一次获取好慢,现在分开来了,速度还可以,你测试下。
            DataTable dt = new DataTable();
            dt.Columns.Add("shuiguo");
            dt.Columns.Add("dianqi");
            dt.Columns.Add("qiche");
            string str = File.ReadAllText(@"E:\txt.txt", Encoding.GetEncoding("gb2312"));
            Regex reg = new Regex(@"(?is)(?<=<div[^>]*?id=""a""[^>]*?>(?:(?!</?div).)*)<tr[^>]*?>(.*?)</tr>");
            Regex reg2 = new Regex(@"(?is)(?<=<td[^>]*?>)\s*(?:<a[^>]*?>)?(.*?)\s*(?:</a>)?(?=\s*</td>)");
            foreach (Match m in reg.Matches(str))
            {
                MatchCollection match = reg2.Matches(m.Groups[1].Value);
                DataRow row = dt.NewRow();
                for (int i = 0; i < match.Count; i++)
                    row[i] = match[i].Groups[1].Value;
                dt.Rows.Add(row);
            }
            GridView3.DataSource = dt;
            GridView3.DataBind();
      

  13.   

     foreach (Match m in reg.Matches(str))
            {
                MatchCollection match = reg2.Matches(m.Groups[1].Value);
                DataRow row = dt.NewRow();
                for (int i = 0; i < match.Count; i++)
                    row[i] = match[i].Groups[1].Value;
                dt.Rows.Add(row);
            }
    循环进不去
      直接跳到gridview绑定那了
      

  14.   

    div的匹配ID要改一下,改成你要抓取的那个id,这里我是随便写的a。
      

  15.   

    太急了 呵呵! 问题已经解决了 谢谢huangwenquan123