vb.net 从字符串到列表框逐行

问题描述 投票:0回答:4

我做了一个

webrequest
来获取网站的html代码,然后我提取 想要的链接
htmlagilitypack
像这样:

    'webrequest'
    Dim rt As String = TextBox1.Text
    Dim wRequest As WebRequest
    Dim WResponse As WebResponse
    Dim SR As StreamReader
    wRequest = FtpWebRequest.Create(rt)
    WResponse = wRequest.GetResponse
    SR = New StreamReader(WResponse.GetResponseStream)
    rt = SR.ReadToEnd
    TextBox2.Text = rt

    'htmlagility to extract the links'
    Dim htmlDoc1 As New HtmlDocument()
    htmlDoc1.LoadHtml(rt)
    Dim links = htmlDoc1.DocumentNode.SelectNodes("//*[@id='catlist-listview']/ul/li/a")
    Dim hrefs = links.Cast(Of HtmlNode).Select(Function(x) x.GetAttributeValue("href", ""))
    'join the `hrefs`, separated by newline, into one string'
    textbox3.text = String.Join(Environment.NewLine, hrefs)

链接是这样的:

http://wantedlink1 
http://wantedlink2 
http://wantedlink3 
http://wantedlink4
http://wantedlink5
http://wantedlink6
http://wantedlink7

现在我想将字符串中的每一行添加到列表框而不是文本框
每行一个项目

大约有400个

http://wantedlink

html vb.net string listbox html-agility-pack
4个回答
1
投票

hrefs
在你的情况下已经包含了
IEnumerable(Of String)
。将它们连接成一个字符串,然后再次将其拆分以使其工作是很奇怪的。由于
String.Split()
返回数组,也许你只需要将
hrefs
投影到数组中即可使
.AddRange()
工作:

ListBox1.Items.AddRange(hrefs.ToArray())

0
投票

使用列表框项目集合的 AddRange 方法并向其传递文本框的lines数组。

添加范围

线条

提示:这是一行代码。


0
投票

没关系,我找到答案了

  Dim linklist = String.Join(Environment.NewLine, hrefs)
  Dim parts As String() = linklist.Split(New String() {Environment.NewLine},
                                   StringSplitOptions.None)
    ListBox1.Items.AddRange(parts)

这会将所有 400 个链接添加到列表框


0
投票

Dim linklist = String.Join(Environment.NewLine, hrefs) 暗淡部分 As String() = linklist.Split(New String() {Environment.NewLine StringSplitOptions.None) ListBox1.Items.AddRange(部分)

© www.soinside.com 2019 - 2024. All rights reserved.