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
相关产品推荐
相关产品推荐

