【发布时间】:2026-01-14 13:40:01
【问题描述】:
我正在尝试在 vb.net(表单)中创建一个程序来处理来自 UVvis 光谱仪的数据。
txt 文件输出如下所示。
“180809_QuartzRefTrans.spc - 原始数据” "波长 nm。","T%" 400.00,90.822 401.00,90.800 402.00,90.823 403.00,90.811 404.00,90.803 405.00,90.804 406.00,90.816 407.00,90.811 408.00,90.833 409.00,90.837 410.00,90.847 411.00,90.827 412.00,90.839 413.00,90.851 414.00,90.828 415.00,90.879 416.00,90.846等等。
我想要做的是将数据读入一个数组,这样我就可以操作列。我需要能够跳过前两行,以便我拥有的只是数字数据。我还需要它从最低到最高(波长)对数组进行排序。有时我们从 800->200 nm 运行,然后意外进入 200->800 nm
Imports System.IO
Imports System.Windows.Forms.DataVisualization.Charting
Public Class Form1
Public Class RefTrans
Public Property Wavelength As Double
Public Property Transpercent As Double
End Class
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim strtext As String
OpenFileDialog1.Title = "Open Text Files"
OpenFileDialog1.ShowDialog()
strtext = OpenFileDialog1.FileName
TextBox1.Text = My.Computer.FileSystem.GetName(strtext)
Label1.Text = My.Computer.FileSystem.GetName(strtext)
Dim line1 As String
Dim output1 As New ArrayList
Using sr As New IO.StreamReader(strtext)
sr.ReadLine()
sr.ReadLine()
Do While sr.Peek() >= 0
line1 = sr.ReadLine()
output1.Add(line1)
Loop
End Using
If strtext <> "" Then
Dim SR As New StreamReader(strtext)
SR.ReadLine()
Do Until SR.EndOfStream
TextBox3.Text = TextBox3.Text & SR.ReadLine & vbCrLf
Loop
SR.Close()
End If
Dim data1 = IO.File.ReadLines(strtext).
Skip(2).
Select(Function(line)
Dim parts = line.Split(","c)
Return New RefTrans With {.Wavelength = CDbl(parts(0)),
.Transpercent = CDbl(parts(1))}
End Function).
ToArray() = line.Split(","c)
End Sub
End Class
【问题讨论】:
-
显示您尝试过的代码在哪里?
-
抱歉,我是 * 的新手,所以我认为我在其中添加了一个额外的步骤。
-
File.ReadAllLines()` 是您真正需要的。避免使用ArrayList,因为它几乎已被弃用 -
我对 vb.net 很陌生。有没有办法跳过前两行?
-
将 mylineslist 调暗为新数组