0

これは、6 回実行したシリアル ツールからのデータです。データの各行を一貫して解析できる必要があります。

健全性を確保できるように、このデータを修正する方法について誰か提案がありますか?

確か\r\nに、最初の行の最後に a があります。ラインアップを分割することもあれば、ランダムな場所で分割することもあります。パケット番号の後の 16 進数である重要なデータを侵食しないかどうかさえ確信が持てません。データが正常であることを確認できれば、次のようなことを行うだけで完了できvalue.Split(':')[1].Split(' ')[1]ます。それをつなぎ合わせる方法が思い浮かびません。また、明確にするために、ツールから読み取る必要があるため、データセット全体が 1 つの文字列になっています。だから、私はただやっていて、ループstring[] values = message.Split('\n');を繰り返していました。foreach

Packe
t 0: 1A064140084243440842555803EE (overlay)
Packet 1: 1A06414258404643440842585503EE
Packet 2: 1D0608054203EE
Packet 3: 1D0608427273747571505703EE
...


Packet 0: 1A064140084243440842555803EE (overlay)
Packet 1: 1A06414258404643440842585503EE
Packet 2: 1D0608054203EE
Packet 3: 1D0608427273747571505703EE
...


P
acket 0: 1A064140084243440842555803EE (overlay)
Packet 1: 1A06414258404643
Packet 2: 1D0608054203EE
Packet 3: 1D0608427273747571505703EE
...


Packet 0
: 1A064140084243440842555803EE (overlay)
Packet 1: 1A06414258404643440842585503EE
Packet 2: 1D0608054203EE
Packet 3: 1D0608427273747571505703EE
...


Pack
et 0: 1A064140084243440842555803EE (overlay)
Packet 1: 1A06414258404643440842585503EE
Packet 2: 1D0608054203EE
Packet 3: 1D0608427273747571505703EE
...


Packet 0: 1A064140084243440842555803EE (overlay)
Packet 1: 1A06414258404643440842585503EE
Packet 2: 1D0608054203EE
Packet 3: 1D0608427273747571505703EE
...
4

1 に答える 1

1

Offlerが述べたことへの+1:

  1. \ r\nのバリエーションを削除します
  2. 「パケット番号:」による正規表現グループ。この後、次のパケットエントリまでのすべてが必要です。
  3. グループ化の正規表現分割
  4. 必要に応じてデータをクリーンアップする

これが説明するための大まかなスクラッチプログラムです:

        var reader = new StreamReader("Test.txt");
        var contents = reader.ReadToEnd();
        var strippedContents = contents.Replace("\r\n", "").Replace("\r", "").Replace("\n", "");
        var regex = new Regex(@"(?<packet>Packet \d+: )");
        var matches = regex.Split(strippedContents);

Test.txtは、1番目と3番目のセクション「Packe \ r\n」と「P\r \ n」のデータを結合するだけですが、セクション間にスペースを入れずに情報を順番に保持しました。

上記の番号4はスクラッチプログラムには含まれていませんが、データには配列の奇数インデックスごとにパケットセクションがあり、インデックス0は空の文字列( "")です。エレガントではありませんが、基本的には正規表現に「これ以外のすべてに一致する」と言っています

それはおそらく最終的な解決策ではありませんが、少なくともあなたが始めることができるはずです。

于 2013-02-04T22:57:46.963 に答える