0

我尝试每隔一次拆分一个字符串+|当我尝试从 split 中仅读取 3 个单词时它工作正常words1(0-3),但是当我尝试读取words1(4)整个函数时失败......这是代码:

Private Function SetUpdateData()
    Try
        Dim delimiterChars As Char() = {"+"c}
        Dim words As String() = updatelist.Split(delimiterChars)

        Dim i As Integer = 1
        Do While (i < words.Length)
            Dim delimiterChars1 As Char() = {"|"c}
            Dim words1 As String() = words(i).Split(delimiterChars1)

            Dim name As String = words1(0)
            Dim version As String = words1(1)
            Dim fileurl As String = words1(2)
            Dim size As String = (words1(3) / 1024D / 1024D).ToString("0.00") & " MB"

            Dim cversion As FileVersionInfo = FileVersionInfo.GetVersionInfo(Path.Combine(Directory.GetCurrentDirectory() & "\" & name))
            If My.Computer.FileSystem.FileExists(Directory.GetCurrentDirectory() & "\" & name) Then
                If Not version.Contains(cversion.FileVersion) Then
                    DataGridView1.Rows.Add(name, version, size)
                    RichTextBox1.AppendText("+" & words1(0) & "|" & words1(1) & "|" & words1(2) & "|" & words1(3))
                End If
            Else
                DataGridView1.Rows.Add(name, version, size)
                RichTextBox1.AppendText("+" & words1(0) & "|" & words1(1) & "|" & words1(2) & "|" & words1(3))
            End If
            i = (i + 1)
        Loop
    Catch ex As Exception
        MsgBox("error")
    End Try
End Function

上面的这个完全没有问题,但是当你words1(4)像这样添加时:

Private Function SetUpdateData()
    Try
        Dim delimiterChars As Char() = {"+"c}
        Dim words As String() = updatelist.Split(delimiterChars)

        Dim i As Integer = 1
        Do While (i < words.Length)
            Dim delimiterChars1 As Char() = {"|"c}
            Dim words1 As String() = words(i).Split(delimiterChars1)

            Dim name As String = words1(0)
            Dim version As String = words1(1)
            Dim fileurl As String = words1(2)
            Dim size As String = (words1(3) / 1024D / 1024D).ToString("0.00") & " MB"
            Dim status As String = words1(4)

            Dim cversion As FileVersionInfo = FileVersionInfo.GetVersionInfo(Path.Combine(Directory.GetCurrentDirectory() & "\" & name))
            If My.Computer.FileSystem.FileExists(Directory.GetCurrentDirectory() & "\" & name) Then
                If Not version.Contains(cversion.FileVersion) Then
                    DataGridView1.Rows.Add(name, version, size)
                    RichTextBox1.AppendText("+" & words1(0) & "|" & words1(1) & "|" & words1(2) & "|" & words1(3) & "|" & words(4))
                End If
            Else
                DataGridView1.Rows.Add(name, version, size)
                RichTextBox1.AppendText("+" & words1(0) & "|" & words1(1) & "|" & words1(2) & "|" & words1(3) & "|" & words(4))
            End If
            i = (i + 1)
        Loop
    Catch ex As Exception
        MsgBox("error")
    End Try
End Function

此外,它正在拆分的字符串是:

+Thing v2.exe|1.0.0.1|http://example.com/uploads/Thing v2.exe|205824|Primary+Thing v2 DLL.dll|1.0.0.1|http://example.com/uploads/Thing DLL.dll|1097728|Secondary

都应该输出:

words1(0) - Thing v2.exe 
words1(1) - 1.0.0.1 
words1(2) - http://example.com/uploads/Thing v2.exe 
words1(3) - 205824 
words1(4) - Primary

但正如我上面所说,一旦使用 words1(4) ,它就会使整个函数崩溃......

它会捕获并失败并给出错误消息,但是当我尝试处理msgbox(ex)异常错误时,没有msgbox弹出,程序只是继续。

如果有人可以解决这个问题或给我一些帮助,将不胜感激,提前感谢,如果这对我来说也很混乱,我们深表歉意!

4

2 回答 2

0

您的拆分功能工作正常,但以下行有错误(其中有 2 行):

RichTextBox1.AppendText("+" & words1(0) & "|" & words1(1) & "|" & words1(2) & "|" & words1(3) & "|" & words(4))

最后words(4)应该是words1(4)

于 2015-10-28T05:59:29.747 回答
0

你的程序中有两个循环: Loop1: words1(0)>>Thing v2.exe

单词1(1)>>1.0.0.1

words1(2)>> http://example.com/uploads/Thing v2.exe

字1(3)>>205824

单词1(4)>>初级

Loop2:words1(0)>>Thing v2 DLL.dll

单词1(1)>>1.0.0.1

words1(2)>> http://example.com/uploads/Thing DLL.dll

话1(3)>>1097728

words1(4)>>中学

看来您在下一行中将 words1(4) 拼错为 words(4)

 RichTextBox1.AppendText("+" & words1(0) & "|" & words1(1) & "|" & words1(2) & "|" & words1(3) & "|" & words(4))
于 2015-10-28T06:02:46.220 回答