zoukankan      html  css  js  c++  java
  • ASP.NET/C#获取文章中图片的地址

    前几天修改一个网站的布局的时候需要把简单的新闻列表修改为图文结合+新闻列表,不过这新闻的数据库非常简单,图片是在编辑器里面和HTML一起存入数据库中的content字段的,所以工作简化到从一个字符串里面获取图片的地址并输出。在HTML的图片标签一般如下格式所示:<img src=”" alt=”" title=”" width=”" height=”" />,这就相当于编程中的一个结构体啊,里面的一个个属性就是切入点,不过.NET中还没有函数去完成这个操作,自己根据别人的思路写个类吧。

    算法有两个,一是根据查找字符串中是否有<img />标签,如果有的话输出src=”"里面的地址;二是正则表达式,字符串中有满足正则的就输出src的值。前者经过实验效率不高并且程序总是出bug,后者简洁高效,是首选。

    首先新建一个类:ImgHelper.cs,然后添加引用:using System.Text.RegularExpressions;,然后添加下面的代码。

    [csharp] view plaincopy
     
    1. class ImgHelper  
    2. {  
    3.     /// <summary>  
    4.     /// 获取文章中图片地址的方法  
    5.     /// </summary>  
    6.     /// <param name="html">文章内容</param>  
    7.     /// <param name="regstr">正则表达式</param>  
    8.     /// <param name="keyname">关键属性名</param>  
    9.     /// <returns></returns>  
    10.     public static ArrayList getImgUrl(string html, string regstr, string keyname)  
    11.     {  
    12.         ArrayList resultStr = new ArrayList();  
    13.         Regex r = new Regex(regstr, RegexOptions.IgnoreCase);  
    14.         MatchCollection mc = r.Matches(html);  
    15.   
    16.         foreach (Match m in mc)  
    17.         {  
    18.             resultStr.Add(m.Groups[keyname].Value.ToLower());  
    19.         }  
    20.         if (resultStr.Count > 0)  
    21.         {  
    22.             return resultStr;  
    23.         }  
    24.         else  
    25.         {  
    26.             //没有地址的时候返回空字符  
    27.             resultStr.Add("");  
    28.             return resultStr;  
    29.         }  
    30.     }  
    31.   
    32. }  


    在.aspx.cs文件中调用:

    [csharp] view plaincopy
     
    1. Image1.ImageUrl =ImgHelper.getImgUrl("字符串",@"<IMG[^>]+src=s*(?:'(?<src>[^']+)'|""(?<src>[^""]+)""|(?<src>[^>s]+))s*[^>]*>""src")[0].ToString();//这里是获取数组中第一个图片地址,当然也可以获取文章中其他图片,只需修改索引号。  
  • 相关阅读:
    转载 NPOI.dll 用法。单元格,样式,字体,颜色,行高,宽度。读写excel
    Microsoft Visual SourceSafe 6.0 无法关联项目
    dynamic json
    c#查找string数组的某一个值的索引
    C#中 删除掉字符串数组中的空字符串
    c# 比较两个数组每一个值是否相等
    c#比较两个数组的差异
    C#动态操作DataTable(新增行、列、查询行、列等)
    C#数字转字母,ASCII码转换
    c#中使程序跳到指定行中
  • 原文地址:https://www.cnblogs.com/q101301/p/3701865.html
Copyright © 2011-2022 走看看