You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET读取文本文件数据并存储为多维数组的实现问题

VB.NET 读取文本数值到动态二维列表/数组

由于你无法预先确定文件的行数和列数,固定长度数组显然不适用,推荐使用嵌套动态列表(List(Of List(Of Double)))来存储数据,处理完成后还可以按需转换为二维数组。以下是完整的实现代码及说明:

' Import Data
Dim Comp_path As String = FinalPath & "Components_colors.txt"
' 用嵌套List存储,支持动态扩展
Dim dataList As New List(Of List(Of Double))()

Using reader As New StreamReader(Comp_path)
    Dim line As String
    ' 逐行读取
    While (line = reader.ReadLine()) IsNot Nothing
        ' 跳过空行和注释行(以#开头,兼容前置空格)
        If String.IsNullOrWhiteSpace(line) OrElse line.TrimStart().StartsWith("#") Then
            Continue While
        End If
        ' 按逗号分割当前行的数值字符串,移除空项
        Dim numStrings As String() = line.Trim().Split(New Char() {","c}, StringSplitOptions.RemoveEmptyEntries)
        Dim rowList As New List(Of Double)()
        ' 逐个转换为Double类型
        For Each numStr As String In numStrings
            Dim num As Double
            If Double.TryParse(numStr.Trim(), Globalization.NumberStyles.Float, Nothing, num) Then
                rowList.Add(num)
            End If
        Next
        ' 仅添加包含有效数值的行
        If rowList.Count > 0 Then
            dataList.Add(rowList)
        End If
    End While
End Using

' 可选:将List转换为二维Double数组(适配需要固定数组的场景)
If dataList.Count > 0 Then
    Dim dataArray(dataList.Count - 1, dataList(0).Count - 1) As Double
    For i As Integer = 0 To dataList.Count - 1
        For j As Integer = 0 To dataList(i).Count - 1
            dataArray(i, j) = dataList(i)(j)
        Next
    Next
    ' 此处可直接使用dataArray
End If

核心要点:

  • 使用Using声明StreamReader,自动释放资源,避免内存泄漏
  • 过滤空行和以#开头的注释行,只处理有效数据
  • 通过Double.TryParse安全转换数值,遇到格式错误的内容会自动跳过,避免程序崩溃
  • 嵌套列表完全支持动态扩展,无需提前定义行数和列数
  • 若你选择用空格作为分隔符,只需将Split的参数改为New Char() {" "c}即可

内容的提问来源于stack exchange,提问作者Ahmed Nabil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 02:05:26