有时候我们获得到的数据是一段HTML文本,也许这段文本里面有许多图片,需要截取一张作为标题图片,这时就可以用到下面这个方法获取到第一张图片:

        #region 获取第一张图片

        /// <summary>
/// 获取HTML文本的图片地址
/// </summary>
/// <param name="content"></param>
/// <returns></returns>/
///
public ArrayList getimgurl(string html)
{
ArrayList resultStr = new ArrayList();
Regex r = new Regex(@"<IMG[^>]+src=\s*(?:'(?<src>[^']+)'|""(?<src>[^""]+)""|(?<src>[^>\s]+))\s*[^>]*>", RegexOptions.IgnoreCase);//忽视大小写
MatchCollection mc = r.Matches(html); foreach (Match m in mc)
{
resultStr.Add(m.Groups["src"].Value.ToLower());
}
if (resultStr.Count > 0)
{
return resultStr;
}
else
{
resultStr.Clear();
return resultStr;
}
}
#endregion

注意:上面所返回的是一个ArrayList 集合,包含了文本里面所有的Img的src!

这样我们就可以访问到img的src了。

有时候我们得到的数据是一段HTML文本,需要截取HTML文本的一部分作为内容摘要。此时,我们可以运用下面这个方法:

        #region 新闻内容摘要

        /// <summary>
/// 新闻内容摘要
/// </summary>
/// <param name="sString"></param>
/// <param name="nLeng"></param>
/// <returns></returns>
public string GetContentSummary(string content, int length, bool StripHTML)
{
if (string.IsNullOrEmpty(content) || length == 0)
return "";
if (StripHTML)
{
Regex re = new Regex("<[^>]*>");
content = re.Replace(content, "");
content = content.Replace(" ", "").Replace(" ", "");
if (content.Length <= length)
return content;
else
return content.Substring(0, length) + "……";
}
else
{
if (content.Length <= length)
return content; int pos = 0, npos = 0, size = 0;
bool firststop = false, notr = false, noli = false;
StringBuilder sb = new StringBuilder();
while (true)
{
if (pos >= content.Length)
break;
string cur = content.Substring(pos, 1);
if (cur == "<")
{
string next = content.Substring(pos + 1, 3).ToLower();
if (next.IndexOf("p") == 0 && next.IndexOf("pre") != 0)
{
npos = content.IndexOf(">", pos) + 1;
}
else if (next.IndexOf("/p") == 0 && next.IndexOf("/pr") != 0)
{
npos = content.IndexOf(">", pos) + 1;
if (size < length)
sb.Append("<br/>");
}
else if (next.IndexOf("br") == 0)
{
npos = content.IndexOf(">", pos) + 1;
if (size < length)
sb.Append("<br/>");
}
else if (next.IndexOf("img") == 0)
{
npos = content.IndexOf(">", pos) + 1;
if (size < length)
{
sb.Append(content.Substring(pos, npos - pos));
size += npos - pos + 1;
}
}
else if (next.IndexOf("li") == 0 || next.IndexOf("/li") == 0)
{
npos = content.IndexOf(">", pos) + 1;
if (size < length)
{
sb.Append(content.Substring(pos, npos - pos));
}
else
{
if (!noli && next.IndexOf("/li") == 0)
{
sb.Append(content.Substring(pos, npos - pos));
noli = true;
}
}
}
else if (next.IndexOf("tr") == 0 || next.IndexOf("/tr") == 0)
{
npos = content.IndexOf(">", pos) + 1;
if (size < length)
{
sb.Append(content.Substring(pos, npos - pos));
}
else
{
if (!notr && next.IndexOf("/tr") == 0)
{
sb.Append(content.Substring(pos, npos - pos));
notr = true;
}
}
}
else if (next.IndexOf("td") == 0 || next.IndexOf("/td") == 0)
{
npos = content.IndexOf(">", pos) + 1;
if (size < length)
{
sb.Append(content.Substring(pos, npos - pos));
}
else
{
if (!notr)
{
sb.Append(content.Substring(pos, npos - pos));
}
}
}
else
{
npos = content.IndexOf(">", pos) + 1;
sb.Append(content.Substring(pos, npos - pos));
}
if (npos <= pos)
npos = pos + 1;
pos = npos;
}
else
{
if (size < length)
{
sb.Append(cur);
size++;
}
else
{
if (!firststop)
{
sb.Append("……");
firststop = true;
}
}
pos++;
} }
return sb.ToString();
}
}
#endregion

注意:方法中的bool StripHTML参数表示是否以HTMl文本方式输出,如果为True的话表示去除HTML标签与样式,截取到的是纯文本,反之就是以HTMl文本输出。

这样我们就可以根据自己喜欢的方式来输出文本。

最新文章

  1. BZOJ 2086: [Poi2010]Blocks
  2. Java学习随笔3:遍历文件夹及文件的读取和写入
  3. oracle直通车6关于rman备份恢复数据文件,以及创建分区表的实验
  4. css选择器nth-child()和nth-of-type()的应用
  5. 关于微信聊天与朋友圈如何快速切换 Mark
  6. 教你区分LVDS屏线及屏接口定义
  7. 快速切换目录软件推荐——autojump
  8. 如何在Linux下重命名多个文件
  9. Delphi 服务操作
  10. 微信小程序环境搭建
  11. RabbitMq install on Centos6.3
  12. 利用data-src属性 更换图片
  13. CF271D 【Good Substrings】
  14. Gym - 100989H
  15. 如何修改路由器的登录IP地址?
  16. 我Win下常用工具清单
  17. markdown语法示例
  18. CF993E Nikita and Order Statistics 【fft】
  19. 图解源码之FutureTask篇(AQS应用)
  20. Linux下Shell命令的输出信息同时显示在屏幕和保存到日志文件中

热门文章

  1. Replace Type Code With Class和Replace Type Code With Subclass和Replace Type Code With State/Strategy
  2. WIFI的通信知识整理
  3. ie下文件上传无权访问的问题
  4. HDU 6118 度度熊的交易计划 【最小费用最大流】 (2017&quot;百度之星&quot;程序设计大赛 - 初赛(B))
  5. D. Babaei and Birthday Cake--- Codeforces Round #343 (Div. 2)
  6. javascript中的_return_false和return_true
  7. Java泛型和反射总结
  8. Struts2声明式异常处理
  9. H5页面解决左右滑动问题
  10. Binder通信机制介绍