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 に切り替えることのもう 1 つの利点は、将来、詳細情報 (記事のヘッダー、日付/時刻、作成者など) を簡単に追加できるようになることです。

于 2012-11-22T17:09:58.990 に答える
1

text.Split(CChar(Environment.NewLine))別の回答で示唆されているように、を使用するのは最適ではありません。Windows システムでEnvironment.NewLineは 2 文字のシーケンスを返します。CR LFしたがって、文字列の最初の文字CChar(Environment.NewLine)だけを返します。CRデータのソースが UNIX システムからのものである場合、s で区切られている可能性がありLFます。

正確な行末がわからない場合は、次を使用できます。

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

CR単独、LF単独、および両方の組み合わせで分割されるため、すべてのケースをカバーする必要があります。

于 2012-11-22T21:05:40.910 に答える