Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim client As WebClient = New WebClient()
Label1.Text = client.DownloadString("http://localhost:81/test/index.html")
Label2.Text = Label1.Text
Dim input As String = Label1.Text
Dim output As String = Regex.Replace(input, "<body>|</body>|<html>|</html>", "")
Label2.Text = output
End Sub
我正在下载网站并存储在label1中。将其转换为label2(用于测试),因为我需要用文本替换label1。
HTML文件(测试文件)。我需要在链接之前或之前创建没有任何新行的链接。
<html>
<body>
http://www.google.com
</body>
</html>
我怎样才能显示
http://www.google.com
标签中的?尝试用Nothing
替换它并且它给出了错误。
答案 0 :(得分:0)
您是否尝试过String.empty或vbNullString(string.empty会更好,因为它是.NET Native,我认为vb常量只是包装器。)
答案 1 :(得分:0)
假设output
的当前值是在其之前和之后的两个new line
个字符(或其他无关的空格)的链接:
\n
\n
http://www.google.com
\n
\n
然后正则表达式按预期运行(你没有用空格做任何事情,所以正则表达式忽略它。)
只需在.Trim
的末尾添加.Replace
即可消除任意一方的空白:
Dim output As String = Regex.Replace(input, "<body>|</body>|<html>|</html>", "").Trim
另外,您的正则表达式不适用于比测试页面复杂的网页。如果您希望在实际网页上尝试此操作,最好的选择可能是使用设计用于捕获链接周围的分隔标记的正则表达式,然后使用另一个从第一个结果中获取链接的正则表达式。您还可以尝试将检索到的页面实例化为HTMLDocument
,它应该为您处理实际的解析,此时从VB.Net代码隐藏的DOM导航成为可能。
总的来说,通常有更好的方法从HTML(而不是使用正则表达式)中提取您可能想要在项目/用例气球和this之前调查的信息。 :)