none
格式不对,哪里要改下 RRS feed

  • 问题

  • IncludeHtml =GetHtml.Substring(GetHtml.IndexOf("<!--#")+19,GetHtml.IndexOf("""",GetHtml.IndexOf("<!--#")+19)-(GetHtml.IndexOf("<!--#")+19));

    就是想截取<!--#include file="top.html" -->里面的top.html,但是这样格式好像有问题,应该怎么改下?

    2010年3月12日 5:41

答案

  • 使用正则表达式。

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Text.RegularExpressions;
    
    namespace X.ConsoleApplication
    {
        class Program
        {
            static void Main(string[] args)
            {
                StringBuilder sb = new StringBuilder();
                sb.AppendLine("<!--#include file=\"top.html\" -->");
                sb.AppendLine("<tr>");
                sb.AppendLine("<td width=\"251\" align=\"center\" valign=\"top\"><!--#include file=\"proleft.html\" -->");
                sb.AppendLine("<img src=\"images/about6.jpg\" width=\"231\" height=\"61\"></td>");
                sb.AppendLine("<td valign=\"top\"><table width=\"95%\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">");
                sb.AppendLine("<tr>");
                sb.AppendLine("<!--#include file=\"down.html\" -->");
    
                List<string> result = new List<string>();
                string pattern = "<!--#include file=\"([^\\]]*?)\" -->";
                foreach (Match m in Regex.Matches(sb.ToString(), pattern, RegexOptions.IgnoreCase))
                    result.Add(Regex.Replace(m.Value, pattern, "$1", RegexOptions.IgnoreCase));
    
                foreach (string s in result)
                    Console.WriteLine(s);
    
                Console.ReadKey();
            }
        }
    }
    


    知识改变命运,奋斗成就人生!
    • 已建议为答案 mazhou 2010年3月12日 10:39
    • 已标记为答案 jianming2032 2010年3月13日 8:00
    2010年3月12日 8:10
    版主

全部回复

  • 你好!
         想获得top.html可以这个获取:
    string IncludeHtml = GetHtml.Substring(GetHtml.IndexOf("\"") + 1, 8);
         你试试看,我测试过了是可以正常使用的!
    周雪峰
    2010年3月12日 5:57
    版主
  • GetHtml.Split(new string []{""""},StringSplitOption.None)[1]

    http://feiyun0112.cnblogs.com/
    2010年3月12日 6:06
    版主
  • 你好!
         想获得top.html可以这个获取:
    string IncludeHtml = GetHtml.Substring(GetHtml.IndexOf("\"") + 1, 8);
         你试试看,我测试过了是可以正常使用的!
    周雪峰

    谢谢,其实不是这样的,gethtml里面不是只有一个<!--#include file="top.html" -->,
    其实类似
    <!--#include file="top.html" -->
    <tr>
        <td width="251" align="center" valign="top"><!--#include file="proleft.html" -->
        <img src="images/about6.jpg" width="231" height="61"></td>
        <td valign="top"><table width="95%" border="0" align="center" cellpadding="0" cellspacing="0">
          <tr>
    <!--#include file="down.html" -->

    这种的,我用了一个循环一个个查找文件这样
    2010年3月12日 7:34
  • GetHtml.Split(new string []{""""},StringSplitOption.None)[1]

    http://feiyun0112.cnblogs.com/

    谢谢啊,这个怎么解释啊,我看不懂这样表示是什么意思
    2010年3月12日 7:36
  • 使用正则表达式。

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Text.RegularExpressions;
    
    namespace X.ConsoleApplication
    {
        class Program
        {
            static void Main(string[] args)
            {
                StringBuilder sb = new StringBuilder();
                sb.AppendLine("<!--#include file=\"top.html\" -->");
                sb.AppendLine("<tr>");
                sb.AppendLine("<td width=\"251\" align=\"center\" valign=\"top\"><!--#include file=\"proleft.html\" -->");
                sb.AppendLine("<img src=\"images/about6.jpg\" width=\"231\" height=\"61\"></td>");
                sb.AppendLine("<td valign=\"top\"><table width=\"95%\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">");
                sb.AppendLine("<tr>");
                sb.AppendLine("<!--#include file=\"down.html\" -->");
    
                List<string> result = new List<string>();
                string pattern = "<!--#include file=\"([^\\]]*?)\" -->";
                foreach (Match m in Regex.Matches(sb.ToString(), pattern, RegexOptions.IgnoreCase))
                    result.Add(Regex.Replace(m.Value, pattern, "$1", RegexOptions.IgnoreCase));
    
                foreach (string s in result)
                    Console.WriteLine(s);
    
                Console.ReadKey();
            }
        }
    }
    


    知识改变命运,奋斗成就人生!
    • 已建议为答案 mazhou 2010年3月12日 10:39
    • 已标记为答案 jianming2032 2010年3月13日 8:00
    2010年3月12日 8:10
    版主