Vb.net 仅从文本文件读取整数并分隔

Vb.net 仅从文本文件读取整数并分隔,vb.net,listbox,integer,streamreader,Vb.net,Listbox,Integer,Streamreader,我创建了一个程序,该程序只成功地将包含字符串的文本文件中的整数读取到列表框中。例如: 文本文件包含: 泰勒7 丹尼尔2 迈克6 罗里9 然后列表框将显示:7269。 然而,我计划将这些数字从高到低(反之亦然)进行排序,为了做到这一点,我想尝试将每个数字存储在列表框的新行中,但我不确定如何实现这一点。 我仅用于读取整数的代码是: Dim intOnly As String = IO.File.ReadAllText(File_1) Dim intValue As String

我创建了一个程序,该程序只成功地将包含字符串的文本文件中的整数读取到列表框中。例如: 文本文件包含:

  • 泰勒7
  • 丹尼尔2
  • 迈克6
  • 罗里9
然后列表框将显示:7269。 然而,我计划将这些数字从高到低(反之亦然)进行排序,为了做到这一点,我想尝试将每个数字存储在列表框的新行中,但我不确定如何实现这一点。 我仅用于读取整数的代码是:

    Dim intOnly As String = IO.File.ReadAllText(File_1)

    Dim intValue As String = String.Empty

    For Each c As Char In intOnly

        If IsNumeric(c) Then

            intValue += c

        End If

    Next

    ListBox3.Items.Add(intValue)
End Sub

利用
ListBox.DataSource
属性和一个数组,您将能够在新行中显示每个数字

例如:

aLstSrc = New Integer(2) {}
aLstSrc(0) = 1
aLstSrc(1) = 2
aLstSrc(2) = 3

ListBox1.DataSource = aLstSrc
您应该为示例中的每个循环启动数组并在
中填充

您可以将数组创建为字符串或整数,但如果需要对数据执行进一步处理,则最好选择整数


另请参阅此以获取有关将文本文件处理为数组的更多信息/列表:

尝试以下方法:

    Dim values As New List(Of Integer)

    Dim File_1 As String = System.IO.Path.Combine(My.Computer.FileSystem.SpecialDirectories.MyDocuments, "SomeFile.Txt")
    For Each line As String In System.IO.File.ReadLines(File_1)
        Dim m As System.Text.RegularExpressions.Match = System.Text.RegularExpressions.Regex.Match(line, "\d+")
        If m.Success Then
            values.Add(Convert.ToInt32(m.Value))
        End If
    Next

    values.Sort()
    values.Reverse()
    ListBox3.DataSource = values
试试这个:

Private Sub test()
    Dim sr As New System.IO.StreamReader("file.txt")
    Dim LofInt As New List(Of String)

    While sr.Peek <> -1
        Dim line As String = sr.ReadLine
        Dim intValue As String = String.Empty

        For Each c As Char In line
            If IsNumeric(c) Then
                intValue += c
            End If
        Next

        LofInt.Add(intValue)
    End While

    sr.Close()

    LofInt.Sort()
    For Each i In LofInt
        ListBox1.Items.Add(i)
    Next

End Sub
Private子测试()
Dim sr作为新的System.IO.StreamReader(“file.txt”)
Dim LofInt作为新列表(字符串)
而老皮克-1
作为字符串的尺寸线=sr.ReadLine
Dim intValue为String=String.Empty
对于行中的每个c作为字符
如果是数字(c),那么
intValue+=c
如果结束
下一个
LofInt.Add(intValue)
结束时
高级关闭()
LofInt.Sort()
对于洛芬特的每一个我
列表框1.Items.Add(i)
下一个
端接头
因此,基本上我们要做的是: 我们逐行读取您的文件并存储数值。在每一行之后,我们把我们所拥有的添加到一个列表中。
之后,我们使用该列表的一个函数对“numers”(仍然是一个字符串,所以我们应该说是text)进行排序,并将它们添加到列表框中

不要将字符串用于数学!比如:
如果是数字(c),那么ListBox3.Items.Add(c)
?嘿,我是个新手,但是字符串不是更好,因为它将整数从字符串中分离出来吗?我想如果你想保留数字,不想把它们相加,那对你来说没问题beginning@Index这几乎对我想做的事情起了作用!问题是,虽然它使“10”在单独的行中显示为“1”和“0”,但是否有解决方法?正如您在下面的答案中所看到的,解决此问题的方法不止一种。我一直试图靠近你的方法,因为它可能更容易理解,并且可能对你的计划有用。当试图从文本中过滤数字时,按字符进行过滤是错误的(在大多数情况下)。即使您在这里使用此解决方案,也要看看其他解决方案,并尝试了解它们的作用。如果您的文件不打算更改其格式,那么像拆分函数这样简单的方法应该可以工作。您可以将行拆分并存储到数组中,在isnumeric方法之后检索第二个索引。如果我是你的话,我会把所有这些都放在一个试抓块里。