一段HTML代码<table>
  <tr>
   <td class="tdTitle"><span id="show">2009-01-01</span> <span id="titlem">测试下</span></td>
  </tr>
  <tr>
   <td><span id="showContent">这里是具体的内容</span></td>
  </tr>
</table>我现在想通过下面的代码获取到标题,即 “测试下” 这三个字 int titleS = result.IndexOf("<span id=\"titlem\">") + 18;
int titleE = result.IndexOf("</span>");
string title = result.Substring(titleS, titleE - titleS);
Response.Write(title);但如果这样,却提示错误,因为
int titleE = result.IndexOf("</span>"); 这里指向的不是我想要的第二个结尾的span,请问这里的正值该怎么写,才能保证,获取到的元素是其对应的元素呢?

解决方案 »

  1.   

    int titleE = result.IndexOf(titleS, " </span>"); 
      

  2.   

    int titleE = result.IndexOf(" </span></td>"); 
      

  3.   


    (?<=<span id="titlem">)[\s|\S]*?(?=</span>)
      

  4.   

                string html = @"<table>
      <tr>
      <td class=""tdTitle""> <span id=""show"">2009-01-01 </span> <span id=""titlem"">测试下</span> </td>
      </tr>
      <tr>
      <td> <span id=""showContent"">这里是具体的内容 </span> </td>
      </tr>
    </table>";            Regex reg = new Regex(@"(?is)id=""titlem"">(?<title>[^<]+)<");
                MatchCollection mc = reg.Matches(html);
                foreach (Match m in mc)
                {
                    Console.WriteLine(m.Groups["title"].ToString() + "\r\n");
                }
      

  5.   

             string html = @"<table>
      <tr>
      <td class=""tdTitle""> <span id=""show"">2009-01-01 </span> <span id=""titlem"">测试下</span> </td>
      </tr>
      <tr>
      <td> <span id=""showContent"">这里是具体的内容 </span> </td>
      </tr>
    </table>";            Regex reg = new Regex(@"(?is)id=""titlem"">(?<title>[^<]+)<");
                MatchCollection mc = reg.Matches(html);
                foreach (Match m in mc)
                {
                    Console.WriteLine(m.Groups["title"].ToString() + "\r\n");
                }
      

  6.   

    我也弱弱的问一句
    不是服务器控件 加个runat="server" 有问题?
      

  7.   

    楼上的两位怎么还没明白楼主的意思啊人家是把html当字符串处理,并非是处理aspx文件中某控件的值