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 字符范围(十六进制 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 回答