0

VB.NET で RFC 4180 に従って CSV ファイルに変換したいスペース区切りのテキスト ファイルが何百もあります。 ) も 1 ~ 20 の間で変化する多数の「スペース」で区切られています。ファイルには、たとえば最初の列など、削除したい情報が含まれており、2 番目の列の内容も有効なJavascript タイムスタンプ。これは、ファイルの 1 つの最初の行の例です (ほとんどのスペースが表示されていないことに注意してください)。

#時間注文voil_q_1 boil_q_2 chil_q1 chil_q2 loccool locheat qdomwat
0.0000000 1.0000 4.18700e-09 0.0000 4.18700e-E-11 1.31529-03132.39 9799.3 0.000080000000000-1.0000-4.18700-1.0000-4.18700-132.39
9799.3 0.0000000000000000000000000000000000000000
1.0000 4.18700E-09 0.0000 4.18700E-11 1.31527E-03 131.98 10047. 0.0000
0.2705515735 1.0000 4.18700E-09 0.0000 4.18700E-1.31527E-03 131.97 10152.
0.00-1.00-1.00-1.00-1.00-1.00-1.002。 -03 131.97 10152.0.0000
0.3345515763 1.0000 4.18700E-09 0.0000 4.18700E-11 1.31525E-03 131.97 10184. 0.0000
0.3985515763 1.0000 4.18700E-09 0.0000 4.18700E-11 1.31524E-03 131.98 10192. 0.0000
0.5265515763 1.0000 4.18700E-09 0.0000 4.18700E-11 1.31524 E-03 131.98 10178. 0.0000
0.7825515763 1.0000 4.18700E-09 0.0000 4.18700E-11 1.31523E-03 131.99 10164. 0.0000
0.7825515791 1.0000 4.18700E-09 0.0000 4.18700E-11 1.31522E-03 131.99 10164. 0.0000

どんな提案でも歓迎します。

敬具マックス

4

2 に答える 2

0

スペースの数が変化するのは、列が空だからではないと仮定します...

シンプルに保ち、慣れ親しんだ文字列ツールを使用します。粗雑ですが、私にとっては迅速です。

    Dim s As String = TextBox1.Text
    s = s.Replace(vbNewLine, "|").Replace(vbCr, "").Replace(vbLf, "")
    s = s.Replace("| ", "|") ' trim leading space
    Dim iLen As Integer = -1
    Do
        iLen = s.Length
        s = s.Replace("  ", " ")
    Loop Until iLen = s.Length
    Dim aLines() As String = s.Split("|")
    Dim aLine() As String
    Dim aHeader() As String = aLines(0).Split(" ")
    ' process header
    For i As Long = 1 To aLines.GetUpperBound(0)
        aLine = aLines(i).Split(" ")
        Stop
        ' process line
    Next

TextBox1 には、迷子のサンプルが含まれていますか? 先頭の #. さまざまなスペースが空の列によるものである場合、マッサージはより複雑になり、内部ループでより適切に実行される可能性があります。

上記では、文字列全体をマッサージし、行を配列に配置してから、行をループします。

これは OP の唯一の最初のステップです。

CSV の記述には問題があることがわかりました。特に、消費者が仕様の内容について異なる考えを持っている場合があるためです。可能であれば、究極の消費プログラムでテストしてください。

于 2013-06-10T16:21:04.263 に答える
0

最終的に次のコードを使用し、データグリッドに情報を追加しました

Dim rowvalue As String
Dim streamReader As IO.StreamReader = New IO.StreamReader(FileName)
    While streamReader.Peek() <> -1
    rowvalue = streamReader.ReadLine()
    DataGridView1.Rows.Add(rowvalue.Split(New String() {" "}, StringSplitOptions.RemoveEmptyEntries))
End While

問題は、それがかなり遅いことです.1つのカウントを削除し、他のすべてのファイルを追加する必要があります。他の方法で情報を保存する方が簡単だと思いますか?何か案は?

于 2013-06-14T06:42:28.073 に答える