1

好的,所以我做了一个 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 ” 我试过拆分但没有用,猜我做错了吗?

注意 URL 每次都会不同

4

2 回答 2

4

Split不是适合这项工作的工具。这将导致一段相当复杂且非常脆弱的代码(这意味着只要输入发生最轻微的变化,它就会中断)。

对于一个健壮的、编写良好的解决方案,您需要正确解析 HTML。幸运的是,为此存在罐头解决方案:HtmlAgilityPack 库

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属性的值。

于 2013-07-20T19:02:33.170 回答
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

到目前为止工作完美

于 2013-07-20T19:11:41.873 回答