1

我从我的网站获取文件内容:

    Dim client As WebClient = New WebClient()
    Dim text = client.DownloadString("http://myurl.com/raw.php")

以下text是:

Line
Another Line
Test1
Test2

现在,我怎样才能通过text变量运行一个循环,从每一行中获取一个文本?

我试过这个:

    Dim str As String() = text.Split(":::")
    For Each line As String In str
        MsgBox(line)
    Next

我正在用 完成每一行:::,但这种方法看起来很难看,我希望有更好的解决方案?

4

4 回答 4

6
Dim lines As String() = text.Split(Environment.NewLine)
For Each line As String In lines
    MsgBox(line)
Next

这可能不起作用,因为原始字符串中的换行符Environment.Newline与. 如果字符串来自基于 Unix 的源,则可能会发生这种情况。

另一种方法可能是:

Dim reader = new StringReader(text)
While True
    Dim line = reader.ReadLine()
    If line is Nothing
        Exit While
    Else
        MsgBox(line)
    End If
End While
于 2012-11-22T16:48:52.147 回答
2

如果使用 XML,vb.net 端的示例:

Dim doc As New System.Xml.XmlDocument
doc.Load("http://myurl.com/raw.php")

Dim list = doc.GetElementsByTagName("article")

For Each item As System.Xml.XmlElement In list
    MsgBox(item.InnerText)
Next

编辑:

示例 XML 架构:

<?xml version='1.0'?>
<!-- File generated at 22/11/2012 17:22 -->
<articleList>
  <article>Hello</article>
  <article>World</article>
  <article>Fish</article>
</articleList>

现在切换到 XML 的另一个优势将意味着将来添加更多细节会更容易(如文章标题、日期/时间、作者等)。

于 2012-11-22T17:09:58.990 回答
1

正如另一个答案中所建议的那样,使用text.Split(CChar(Environment.NewLine))不是最佳选择:在 Windows 系统上Environment.NewLine返回两个字符序列。CR LF因此,CChar(Environment.NewLine)只返回CR字符串的第一个字符。如果数据源来自 Unix 系统,则很可能用LFs 分隔。

如果您不确定确切的行尾,可以使用以下命令:

Dim lines As String() = text.Split(new String() {vbCrLf, vbCr, vbLf}, 
                                   StringSplitOptions.None)

这应该涵盖所有情况,因为它单独分裂,CR单独分裂LF和两者结合。

于 2012-11-22T21:05:40.910 回答
-1

很抱歉多年后提出这个问题......我刚刚找到了一种更简单的方法:

dim lin() as string
lin() = TextBox1.Text.Split(vbCrLf)
于 2015-02-26T12:02:47.513 回答