如何从C#中的String中提取url

时间:2017-01-18 10:38:51

标签: c#

我有这个字符串:

 "<figure><img
 src='http://myphotos.net/image.ashx?type=2&image=Images\\2\\9\\11\\12\\3\\8\\4\\7\\685621455625.jpg'
 href='JavaScript:void(0);' onclick='return takeImg(this)'
 tabindex='1' class='myclass' width='55' height='66' alt=\"myalt\"></figure>"

如何检索此链接:

http://myphotos.net/image.ashx?type=2&image=Images\\2\\9\\11\\12\\3\\8\\4\\7\\685621455625.jpg

所有字符串都是相同的类型,所以我需要在 src = href 之间获得子字符串。但我不知道该怎么做。感谢。

6 个答案:

答案 0 :(得分:2)

您可以使用正则表达式:

var src = Regex.Match("the string", "<img.+?src=[\"'](.+?)[\"'].*?>", RegexOptions.IgnoreCase).Groups[1].Value;

答案 1 :(得分:2)

通常,在从HTML代码解析值时应该使用HTML / XML解析器,但是使用像这样的有限字符串,Regex就可以了。

string url = Regex.Match(htmlString, @"src='(.*?)'").Groups[1].Value;

答案 2 :(得分:2)

如果您解析HTML,请不要使用字符串方法,而应使用真正的HTML解析器,如HtmlAgilityPack

var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);  // html is your string
var linksAndImages = doc.DocumentNode.SelectNodes("//a/@href | //img/@src");
var allSrcList = linksAndImages
    .Select(node => node.GetAttributeValue("src", "[src not found]"))
    .ToList();

答案 3 :(得分:1)

如果你的字符串总是采用相同的格式,你可以这样做:

string input =  "<figure><img src='http://myphotos.net/image.ashx?type=2&image=Images\\2\\9\\11\\12\\3\\8\\4\\7\\685621455625.jpg' href='JavaScript:void(0);' onclick='return takeImg(this)' tabindex='1' class='myclass' width='55' height='66' alt=\"myalt\"></figure>";
// link is between ' signs starting from the first ' sign so you can do :
input = input.Substring(input.IndexOf("'")).Substring(input.IndexOf("'"));
// now your string looks like : "http://myphotos.net/image.ashx?type=2&image=Images\\2\\9\\11\\12\\3\\8\\4\\7\\685621455625.jpg"

return input;

答案 4 :(得分:1)

string str = "<figure><imgsrc = 'http://myphotos.net/image.ashx?type=2&image=Images\\2\\9\\11\\12\\3\\8\\4\\7\\685621455625.jpg'href = 'JavaScript:void(0);' onclick = 'return takeImg(this)'tabindex = '1' class='myclass' width='55' height='66' alt=\"myalt\"></figure>";

int pFrom = str.IndexOf("src = '") + "src = '".Length;
int pTo = str.LastIndexOf("'href");

string url = str.Substring(pFrom, pTo - pFrom);

来源:

Get string between two strings in a string

答案 5 :(得分:0)

在这种情况下,Q是你的字符串,我寻找你想要的属性的索引(src =&#39;)然后我删除前几个字符(7包括空格),然后你找文本的时候最后寻找&#39;。

删除你可以使用的前几个字符.IndexOf查找删除的数量,以便它不是硬编码的。

        string q =
            "<figure><img src = 'http://myphotos.net/image.ashx?type=2&image=Images\\2\\9\\11\\12\\3\\8\\4\\7\\685621455625.jpg' href = 'JavaScript:void(0);' onclick = 'return takeImg(this)'" +
            "tabindex = '1' class='myclass' width='55' height='66' alt=\"myalt\"></figure>";
        string z = q.Substring(q.IndexOf("src = '"));
        z = z.Substring(7);
        z = z.Substring(0, z.IndexOf("'"));
        MessageBox.Show(z);

这肯定不是最优雅的方式(看看其他答案:))。