2012-04-15 88 views
0

我有一个基本的锚节点作为字符串,并希望从中获取URL和文本。例如:从vbnet的html节点获取数据

<a href="http://MyAwesomeWebsite.com/">Go to MyAwesomeWebsite</a> 

我想两个字符串,一个具有:

http://MyAwesomeWebsite.com/ 

和其他与

MyAwesomeWebsite 

如何代码呢?

回答

1

你可以使用正则表达式来提取要作为旁的文字:

Imports System.Text.RegularExpressions 
    Sub Main() 
    Dim anchor As String 
    anchor = "<a href=""http://MyAwesomeWebsite.com/"">Go to MyAwesomeWebsite</a>" 

    Dim href As String = Regex.Match(anchor, "\""[a-z,A-Z,0-9,:,/,.]+\""").Value 
    Console.WriteLine(href.Substring(1, href.Length - 2)) 

    Dim content As String = Regex.Match(anchor, "\>[a-z,A-Z,0-9,:,/,., ]+\<").Value 
    Console.WriteLine(content.Substring(1, content.Length - 2)) 
    Console.ReadKey() 
    End Sub 

您也可以使用由字符串提供的方法,如的IndexOf子字符串。 但是如果你想解析很多人认为我建议你使用像HtmlAgilePack这样的库。

+0

谢谢!但有时链接包含一个'rel'属性,它将作为超级引用出现。任何简单的修复正则表达式?或者我应该使用图书馆。我试图避免只为一个小任务使用一个库。 – 2012-04-15 03:17:50

+0

如果你的目标是检查'rel'页面是更好的使用库。但是如果你只是想获得'rel'的值,你可以使用另一个正则表达式作为下一个:'Dim rel As String = Regex.Match(anchor ,“rel = \”“[az,AZ,0-9,:,/ ,.] + \”“”)值 Console.WriteLine(rel.Substring(5,rel.Length - 6)) '如果你想在使用它之前检查正则表达式是否匹配(对于'href'或'rel'使用正则表达式之间的区别),你可以使用** Regex.IsMatch **。我希望能帮到你;) – 2012-04-16 01:01:31