好吧所以我做了一个HTTPWEBREQUEST并且我已经在richtextbox中显示了结果的来源,现在说我在richtextbox中有这个
<p>Short URL: <code><a href="http://URL.me/u/eywnp">http://URL.me/u/eywnp</a></code></p>
我怎样才能得到“http://URL.me/u/eywnp”我试过分裂但没有用,猜猜我做错了?
注意每次都会有不同的网址
答案 0 :(得分:4)
Split
不适合这项工作。这将导致一段相当复杂的代码非常脆弱(意味着只要输入中出现最轻微的变化,它就会中断)。
对于一个功能强大,编写良好的解决方案,您需要正确解析HTML。幸运的是,存在固定的解决方案:The HtmlAgilityPack library。
Dim doc As New HtmlDocument()
doc.LoadHtml(yourCode)
Dim result = doc.DocumentElement.SelectNodes("//a[@href]")(0)("href")
这里唯一复杂的部分是字符串"//a[@href]"
。这是一个XPath字符串。 XPath字符串是一种迷你语言,用于处理HTML或XML文档中的元素。它们在概念上类似于文件路径(如C:\Users\foo\Documents\file.txt
),但语法略有不同。
XPath只选择文档中具有<a>
属性的所有href
元素。然后,您可以抓取该集合中的第一个并检索href
属性的值。
答案 1 :(得分:2)
感谢您的帮助,我找到了解决方案并使用了
Dim iStartIndex, iEndIndex As Integer
With RichTextBox1.Text
iStartIndex = .IndexOf("<p>Short URL: <code><a href=") + 29
iEndIndex = .IndexOf(""">", iStartIndex)
Clipboard.SetText(.Substring(iStartIndex, iEndIndex - iStartIndex))
End With
到目前为止完美无缺