gpt4 book ai didi

asp.net(文章截取前几行作为列表摘要)无损返回HTML代码

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章asp.net(文章截取前几行作为列表摘要)无损返回HTML代码由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

代码如下

<BR>        /* <STRONG>时间很久远了,有码友要,我抄了下来,记得使用的时候还是有部分例外情况要处理,大部分是ok的。</STRONG>          * 函数:           * 说明:无损返回HTML代码          *                * 作者:卡斯Kas(QQ:10590916)          * 修改:2010-12-13、          */         public static string LeftH(string str, int l)          {              //为了防止错误              string odstr = str;              bool isHtml = false;//判断截取开头是否是字符串              int maxLen = str.Length;              int n = 0, i = 0, b = 0, e = 0;              string c, c2 = "", Start = "", EndLabel = "", AllLabel = "";              if (l >= str.Length) return str;//截取字段大于字符长度              bool isErr = false;              try             {              while (n < l && i < maxLen)              {                  //1                  i++;                  c = str.Substring(i - 1, 1);                  string end2str = "";                  try                 {                      end2str = str.Substring(i - 1, 2);                  }                  catch                 {                      end2str = "";                  }                  if (c == "<" && end2str != "</")                  {                      isHtml = true;                      b = i;//记录一个位置                      //5     解决非成对标签                      string end2tag = "";                      try                     {                          end2tag = str.Substring(i, 2);                      }                      catch                     {                          end2tag = "";                      }                      if (end2tag == "br")                      {                          isHtml = false;                      }                      if (str.Substring(i, 1).ToLower() == "%")                      {                          isHtml = false;                      }                      if (str.Substring(i, 1).ToLower() == "?")                      {                          isHtml = false;                      }                      else if (end2tag == "hr")                      {                          isHtml = false;                      }                      //5end                  }                  //1end                  //2                  if (c == "<" && end2str == "</")                  {                      c2 = str.Substring(i - 1, str.Substring(i - 1).IndexOf(">") + 1);                      AllLabel = AllLabel.Substring(c2.Length);                  }                  //2end                  Start = Start + c;//记录当前字符及其前面字符                  if (!isHtml)                  {                      //6     较为准确的计数                      try                     {                          if (str.Substring(i, 2).ToLower() == "br")                          {                          }                          else if (str.Substring(i, 2).ToLower() == "hr")                          {                          }                          else                         {                              n++;                          }                      }                      catch                     {                          //如果出错,则返回纯文本(@"<[^>]+>|</[^>]+>");                          //odstr = Regex.Replace(odstr, @"<[^>]+>|</[^>]+>", "", RegexOptions.IgnoreCase);                          odstr = odstr.Replace("<", "<").Replace(">", ">");                          if (l > odstr.Length) l = odstr.Length;                          return odstr.Substring(0, l);                      }                      //6end                  }                  else                 {                      if (c == ">")//如果循环到>时,要处理的成对标签中间部分                      {                          if (isHtml)                          {                              EndLabel = str.Substring(b, i - b);//获取<到>之间的代码                              e = EndLabel.IndexOf(" ");//标签属性都有空格,以空格为分割,获取标签名                              if (e > 0)                              {                                  EndLabel = "</" + EndLabel.Substring(0, e) + ">";                              }                              else                             {                                  EndLabel = "</" + EndLabel;                              }                              AllLabel = EndLabel + AllLabel;//记录当前结束标签,及所有有关结束标签                          }                          isHtml = false;//重置属性,从新开始                      }                  }                  //4     当结束时,发现有未闭合的标签,则重新来一次                  if (n + 1 >= l)                  {                      if (InStrN(Start, "<") != InStrN(Start, ">"))                      {                          n--;                      }                  }                  //4end              }//end while              }              catch              {                  isErr = true;              }              string newReString = Start + AllLabel + "...";              //最后再次验证              Regex Rg = new Regex("<.[^>/]+>", RegexOptions.Compiled);              Regex Rg2 = new Regex(@"<\s*/[a-z]\s*>", RegexOptions.Compiled);              if (inStrLen(newReString, "<") != inStrLen(newReString, ">"))              {                  isErr = true;              }              else if (inStrLen(newReString.Replace(""", "\""), "\"") % 2 == 1)              {                  isErr = true;              }              else if (Rg.Matches(newReString).Count != Rg2.Matches(newReString).Count)              {                  isErr = true;              }              if (isErr)              {                  odstr = odstr.Replace("<", "<").Replace(">", ">").Replace("\"", """).Replace("'", "'");                  if (l > odstr.Length)                  { newReString = odstr; }                  else                 {                      try                     {                          newReString = odstr.Substring(0, l) + "...";                      }                      catch                     {                          newReString = odstr;                      }                  }              }              return newReString;//返回          } 。

 

最后此篇关于asp.net(文章截取前几行作为列表摘要)无损返回HTML代码的文章就讲到这里了,如果你想了解更多关于asp.net(文章截取前几行作为列表摘要)无损返回HTML代码的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com