我从我的网站上获取文件内容:
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
我用:::
完成每一行,但这种方法看起来很难看,我希望有更好的解决方案?
答案 0 :(得分:5)
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
答案 1 :(得分: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的另一个好处是,将来更容易添加更多细节(如文章标题,日期/时间,作者等)。
答案 2 :(得分:1)
使用text.Split(CChar(Environment.NewLine))
,如另一个答案中所建议的那样,不是最佳的:Environment.NewLine
在Windows系统上返回双字符序列CR LF
。因此,CChar(Environment.NewLine)
仅返回字符串的第一个字符CR
。如果数据源来自unix系统,则可能由LF
s分隔。
如果您不确定确切的行结尾,可以使用以下内容:
Dim lines As String() = text.Split(new String() {vbCrLf, vbCr, vbLf},
StringSplitOptions.None)
这应该涵盖所有情况,因为它仅在CR
,仅在LF
和两者的组合上分开。
答案 3 :(得分:-1)
很抱歉在几年后提出这个问题......我刚刚找到了一种更简单的方法:
dim lin() as string
lin() = TextBox1.Text.Split(vbCrLf)