我有一个字符串值,它具有以下声明值:
<img alt="Desert.jpg" src="/PublishingImages/Lists/Images/NewForm/Desert.jpg" width="174" style="BORDER: 0px solid; ">
该值将具有不同的src值。我想要做的是获取src中的值。我在考虑使用子字符串,但由于src中的值可以变化,我不知道如何实现这一点。
这就是我需要的/PublishingImages/Lists/Images/NewForm/Desert.jpg
感谢任何形式的帮助。
答案 0 :(得分:2)
使用Regex.Match(yourString, "src=.*?\"")
之类的内容,然后从第5个字符开始执行子字符串并删除最后一个引号。正则表达式可能不正确。你应该明白这个想法。
答案 1 :(得分:1)
使用HtmlAgilityPack
解析HTML:
var doc = new HtmlAgilityPack.HtmlDocument();
doc.Load(@"PathToFile"); // or use doc.LoadHtml to get it from a string
var imgHrefSrc = doc.DocumentNode.SelectSingleNode("//img").Attributes["src"];
string value = imgHrefSrc.Value; // /PublishingImages/Lists/Images/NewForm/Desert.jpg
答案 2 :(得分:1)
我建议使用HtmlAgilityPack解析HTML(可从NuGet获得):
string html = "<img alt=\"Desert.jpg\" src=\"/PublishingImages/Lists/Images/NewForm/Desert.jpg\" width=\"174\" style=\"BORDER: 0px solid; \">";
var img = HtmlNode.CreateNode(html);
var src = img.Attributes["src"].Value;
结果:
"/PublishingImages/Lists/Images/NewForm/Desert.jpg"
答案 3 :(得分:0)
我知道你想在c#中得到答案,但这是一个解析你的字符串并将url写入控制台的java代码:
public class HelloWorld{
public static void main(String []args){
String x= "<img alt=\"Desert.jpg\" src=\"/PublishingImages/Lists/Images/NewForm/Desert.jpg\" width=\"174\" style=\"BORDER: 0px solid; \">";
String a=x.split(" ")[2].split("\"")[1];
System.out.println(a);
}
}
答案 4 :(得分:0)
您可以使用Regex作为最简单的解决方案,不需要您可能需要或不需要的其他库:
Regex rx = new Regex("src\\s?=\\s?\"[^\"]*\"");
string x = "<img alt=\"Desert.jpg\" src=\"/PublishingImages/Lists/Images/NewForm/Desert.jpg\" width=\"174\" style=\"BORDER: 0px solid; \">";
Console.WriteLine(rx.IsMatch(x));
请注意,此正则表达式允许'src','='和引用值之间的空格,并查找开始和结束报价。
答案 5 :(得分:0)
尝试使用正则表达式作为轻量级解决方案。
试试这个正则表达式(在http://regexpal.com/上测试):
src=\"([^\"]*)\"
您可以使用捕获的组
提取字符串示例代码:
string input = "<img alt=\"Desert.jpg\" src=\"/PublishingImages/Lists/Images/NewForm/Desert.jpg\" width=\"174\" style=\"BORDER: 0px solid; \">";
string pattern = "src=\"([^\"]*)\"";
string extractedString = Regex.Match(input, pattern).Groups[1].Value;