0

私はダウンローダをコーディングしていますが、基本的にどのように機能するかは、次のようなテキスト ファイルにいくつかのリンクを入れることです。

1   http://127.0.0.1:8080/patch/patches/test1.rar
2   http://127.0.0.1:8080/patch/patches/test2.rar
3   http://127.0.0.1:8080/patch/patches/test3.rar

したがって、次のコードを使用して、vb.net の Web クライアント経由でこのテキスト ファイルをダウンロードします。

    Dim PatchList = wc.DownloadString("http://127.0.0.1:8080/patch/PatchList.txt").Trim
    Dim tLines As String() = PatchList.Split(Environment.NewLine)

    For Each NewLine As String In tLines
        Dim tVersionAndUrl As String() = NewLine.Split(vbTab)
        Dim encText As New System.Text.UTF8Encoding()
        Dim btText() As Byte
        btText = encText.GetBytes(tVersionAndUrl(0))

        If tVersionAndUrl.Length < 2 Then
            Exit For
        End If

        If Integer.Parse(tVersionAndUrl(0)) < Integer.Parse(CVersion.Text) Then
            Dim TempPath As String = "\launcher\temp.rar"
            My.Computer.Network.DownloadFile(tVersionAndUrl(1), Me.GetFileName(tVersionAndUrl(1)))
            CVersion.Text = tVersionAndUrl(0)
        End If

    Next
    MsgBox("Client is up to date")

すべてがうまく機能しますが、唯一の問題は、ファイルをダウンロードするときに、各番号の前にある種のスペースを置くことです。このスペースは通常のスペースであるか、新しい行が原因である可能性があると思います私が何も起こらなかったので、それをトリミングします。したがって、次のようになります。

http://puu.sh/45B9j.png

しかし、最初の行は問題なく、スペースがありません。

私はそれを取り除くために多くの異なる戦略を試みましたが、うまくいきませんでした.

編集:改行かスペースかを確認しようとしましたが、どちらでもないようです。

私はこのコードを使用しました:

    If tLines.Contains(Environment.NewLine) Then
        MsgBox("It's a freaking new line!")
    ElseIf tLines.Contains(" ") Then
        MsgBox("It's a freaking space!")
    Else
        MsgBox("There's no new lines or spaces. Huh?")
    End If

どちらでもないことを確認する最後のメッセージボックスを受け取りました。今、私は混乱しています。

EDIT2:ここで要求されたのは、スペース/改行を削除しようとしたものです。

Dim newString As String = tLines.ToString.Remove(Environment.NewLine)

また試しました:

Dim newString As String = tLines.ToString.Replace(vbCr, "").Replace(vbLf, "")

そして私は試しました:

Dim NoSpace = Replace(tLines.ToString, Chr(13), vbNullString)

この:

Dim TrimmedLines As String = tLines.ToString.Trim
4

1 に答える 1

0

正規表現を使用して、ASCII 文字 (16 進 0x20-0x7E) の範囲内にない各文字列からすべての文字を削除してみてください。

Dim PatchList = wc.DownloadString("http://127.0.0.1:8080/patch/PatchList.txt").Trim
Dim tLines As String() = PatchList.Split(Environment.NewLine)

For i As Integer = 0 To tLines.Length - 1

  tLines(i) = Regex.Replace(tLines(i), "[^\u0020-\u007E]", String.Empty)

Next

ASCII テーブル: http://www.asciitable.com/

于 2013-08-19T15:25:19.310 に答える