asp.net中如何从一段字符串当中获取图片路径

啾啾我 2011-08-03 04:40:34
例如:
<p><strong><em><u></u></em></strong><del> 富文本框内容编码</del></p><p><strong><em><u></u></em></strong><del></del>&nbsp;</p><p><img src="../ScratchFile/2011080303562437.jpg" alt="" /></p>
等等后面可能还跟有多个这样的图片地址,图片的名称是随机的,扩展名也是随机的。
这种情况下我怎么获得这个图片路径呢???
...全文
632 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxldfang 2011-08-03
  • 打赏
  • 举报
回复

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;
namespace sxLdfang
{
class Program
{
static void Main(string[] args)
{
string html = @"<p><strong><em><u></u></em></strong><del> 富文本框内容编码</del></p><p><strong><em><u></u></em></strong><del></del>&nbsp;</p><p><img src="../ScratchFile/2011080303562437.jpg" alt="" /></p>
";
string pattern = @"(?<=;<img src=")((?!").)*";
MatchCollection mc = Regex.Matches(html, pattern);
foreach (Match m in mc)
{
Console.WriteLine(m.Value);
}
Console.ReadKey();
}
}
}


运行结果:
../ScratchFile/2011080303562437.jpg
干巴猴儿 2011-08-03
  • 打赏
  • 举报
回复

这是我的正则写法:识别引号中的src的值。
Regex regImg = new Regex(@"(?is)<(img|embed|bgsound)[^>]*?src[\s]*=[\s]*[\""\'](?<imgSrc>[^\""\']*)[\""\'][^>]*>");
MatchCollection matchs = regImg.Matches(strHtml);
//TODO:开始字符
int iPos = 0;
foreach (Match m in matchs)
{
//...
}

看这个贴,还发现了我代码里的一个bug,真好,呵呵!
generhappy 2011-08-03
  • 打赏
  • 举报
回复
从图片的后缀入手,图片的后缀就那几个。。。。
Lisliefor 2011-08-03
  • 打赏
  • 举报
回复
1. 可以写正则来匹配,不过,这个正则我写不来。
2. 可以通过substring的方式来取,思路是这样的:


string str = "<p><strong><em><u></u></em></strong><del> 富文本框内容编码</del></p><p><strong><em><u></u></em></strong><del></del>&nbsp;</p><p><img src="../ScratchFile/2011080303562437.jpg" alt="" /></p>";

List<string> list = new List<string>();
while(str.indexOf("src="") > -1){
int flag = str.IndexOf("src="");
string tmp = str.Substring(flag + 10, str.Length - flag - 10); // 去掉前面不要的部分
int endFlag = str.IndexOf("""); // 找到图片地址后的引号
list.Add(tmp.Substring(0, tmp.Length - endFlag)); // 截取图片地址

str = tmp;
}


循环结束,差不多想要的图片地址都在list里面了,不过,我自己没有测试过。
teerhu 2011-08-03
  • 打赏
  • 举报
回复
var str="</del></p><p><strong><em><u></u></em></strong><del></del>&nbsp;</p><p><img src="../ScratchFile/2011080303562437.jpg" alt="" /></p>"

str=str.substring(indexOf('img src="'),indexOf('=" alt='));
蝶恋花雨 2011-08-03
  • 打赏
  • 举报
回复
要匹配的字符串:<img src=image/ad1.gif width="128" height="36"/><img src='image/ad2.gif' width="128" height="36" />

正则表达式:<img[\s]+src[\s]*=[\s]*((['"](?<src>[^'"]*)[\'"])|(?<src>[^\s]*))

提取的结果:


image/ad1.gif

image/ad2.gif

啾啾我 2011-08-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 conniezhixi 的回复:]
img,src,图片类型总是固定的吧?这还不好取?
[/Quote]
这个是富文本框,src这个是不能固定的,也可能有视频或者flash等,
/ScratchFile/这个到是固定的,那这怎么取呢?扩展名可能是gif或者jpg 或者jpeg等。
蝶恋花雨 2011-08-03
  • 打赏
  • 举报
回复
用正则,
/// <summary> 
/// 取得HTML中所有图片的 URL。
/// </summary>
/// <param name="sHtmlText">HTML代码</param>
/// <returns>图片的URL列表</returns>
public static string[] GetHtmlImageUrlList(string sHtmlText)
{
// 定义正则表达式用来匹配 img 标签
Regex regImg = new Regex(@"<img\b[^<>]*?\bsrc[\s\t\r\n]*=[\s\t\r\n]*[""']?[\s\t\r\n]*(?<imgUrl>[^\s\t\r\n""'<>]*)[^<>]*?/?[\s\t\r\n]*>", RegexOptions.IgnoreCase);

// 搜索匹配的字符串
MatchCollection matches = regImg.Matches(sHtmlText);
int i = 0;
string[] sUrlList = new string[matches.Count];

// 取得匹配项列表
foreach (Match match in matches)
sUrlList[i++] = match.Groups["imgUrl"].Value;
return sUrlList;
}
z22708387 2011-08-03
  • 打赏
  • 举报
回复



找到img 然后截取.
Connie 2011-08-03
  • 打赏
  • 举报
回复
img,src,图片类型总是固定的吧?这还不好取?

62,066

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧