3

以下は、私のプロジェクトで使用するコードです。

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"

各float値の抽出に問題があります。個別に保存できるように、各値を抽出する方法をいくつか提案してください。

4

1 に答える 1

5

クラスは、TextFieldParser各行のすべてのフィールドを分割することになっています。そうでない場合は、正しく設定されていないことが原因です。この場合、問題は次の行のようです。

Reader.SetDelimiters("\t")

この種の文字列リテラル構文は C# やその他の同様の言語では機能しますが、VB.NET では機能しません。バックスラッシュ文字は VB.NET のエスケープ文字ではないため、文字列は入力したとおりに取得されます。したがって、TextFieldParserは、単一のタブ文字ではなく、バックスラッシュの後に文字 t が続く 2 文字の文字列を探します。タブ文字を区切り文字として使用したい場合は、VB.NET でこれを行う必要があります。

Reader.SetDelimiters(ControlChars.Tab)
于 2013-02-22T13:36:52.397 に答える