.net - 从 vb.net 中的文件中提取值

标签 .net vb.net csv

下面是我在项目中使用的一段代码:

Using Reader As New Microsoft.VisualBasic.FileIO.TextFieldParser(OpenFileDialog1.FileName.ToString())
    Reader.TextFieldType = FileIO.FieldType.Delimited
    Reader.SetDelimiters("\t")
    Dim currentRow As String()
    Dim valueArray() As Double = {0, 0, 0, 0}
    Dim power3, power2, power1, constVar As Double
    power3 = 0.0
    power2 = 0.0
    power1 = 0.0
    constVar = 0.0
    While Not Reader.EndOfData
        Try
            currentRow = Reader.ReadFields()
            Dim currentString As String
            Dim i As Integer = 0
            Dim j As Integer = 0
            For Each currentField As String In currentRow
                currentString = currentField(0)
                MsgBox(currentField)
                MsgBox(currentString)
            Next
        Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException
            MsgBox("Line " & ex.Message & "is not valid and will be skipped.")
        End Try
    End While
End Using

我正在阅读的文本文件包含用制表符分隔的浮点值,如下所示:

0.5 0.6 0.7 0.8

但是,现在,当我运行代码时,我得到了作为字符串的完整行 "0.5 0.6 0.7 0.8"

我在提取每个浮点值时遇到问题。请建议一些提取每个值的方法,以便我可以单独存储它们。

最佳答案

TextFieldParser 类应该为您拆分每一行的所有字段。如果它没有这样做,那是因为你没有正确设置它。在这种情况下,您的问题似乎是以下行:

Reader.SetDelimiters("\t")

虽然这种字符串文字语法适用于 C# 和其他类似语言,但不适用于 VB.NET。反斜杠字符不是 VB.NET 中的转义字符,因此字符串将完全按照您键入的方式使用。所以 TextFieldParser 正在寻找一个由反斜杠后跟字母 t 组成的双字符字符串,而不是单个制表符。如果你想使用制表符作为分隔符,我强烈怀疑这是你的意图,那么,在 VB.NET 中,你需要这样做:

Reader.SetDelimiters(ControlChars.Tab)

关于.net - 从 vb.net 中的文件中提取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15024233/

相关文章:

javascript - 谷歌地图如何只显示一个标记?

python - 有没有更好/更干净的方法来格式化这个脚本

c# - 如何选择一个圆圈,将其拖放到 Windows 窗体中的另一个位置?

vb.net - 使用 Splashscreen VB.NET 加载另一个表单

c# - C#.net循环线程堆栈溢出

c# - 是否有任何功能或工具(免费)可以将任何 .Net 类型名称自动完成为完全限定名称?

node.js - 如何从 Node.js 程序运行 Excel VBA?

sqlite - 检查 SQlite 中文本的编码

c# - .Net程序集的文档报告

c# - 我如何在 ASP.NET MVC Controller 中使用 Lazy<T>?