テキストファイルの中身を並べ替えるには?


ぶらいあん  2005-07-19 19:01:27  No: 123578

テキストファイルを読み込んで、並べ替えて見やすくさせたいのですが、
どうやったらいいのか分かりません。

下のような中身のテキストファイルを読み込んで
        040E0C01031000FFFF8F7818180080        040E0B0105(改行)
01031000                              01051000(改行)
1000C0004008000800              040E0401050C00(改行)
                  01050C03020003(改行)

下のように並べ変えて保存をしたいです。
01031000
040E0C01031000FFFF8F7818180080
01051000
040E0B01051000C0004008000800
01050C03020003
040E0401050C00

空白の部分はTabではなく半角スペースです。
環境はVB6です。
このようにファイルの中身を操作する方法を
教えてください。
よろしくお願いします。


いな  2005-07-19 19:27:40  No: 123579

やるとするならば、

ファイルを1行ずつ読み込んで
Replace関数で半角スペース二つを、半角スペース一つに置換し
Split関数で区切り
配列に格納。

あとは並べ替え、


ねろ  2005-07-19 19:30:21  No: 123580

並べ替えの規則を教えてもらわないとアドバイスは難しい。。。。
何で、040E0B0105(改行)と1000C0004008000800がくっついたんだ。


ぶらいあん  2005-07-19 20:38:10  No: 123581

to いなさん
ありがとうございます。
いなさんに書いていただいたやり方でやってみます。


ぶらいあん  2005-07-19 20:49:23  No: 123582

to ねろさん
ごめんなさい、説明不足でした。
並べ替えの規則は
奇数行目が受
偶数行目が送
となっているのですが、それを
左から始まる数字列の優先順位が高いとして、
奇数行目を送
偶数行目を受
としたいのです。


ぶらいあん  2005-07-19 20:52:41  No: 123583

to ねろさん
あと、040E0B0105(改行)と1000C0004008000800がくっついた理由は
040E0B01051000C0004008000800
で一つの意味のある数字列なのです。
機器がファイルを保存するときに
何文字かで改行をいれるようになっているらしく、
間の改行を抜いた状態で保存したいのです。

よろしくお願いします。
長文しつれいしました。


特攻隊長まるるう  2005-07-21 20:33:48  No: 123584

>いなさんに書いていただいたやり方でやってみます。
結果の報告をお願いします。
…サンプルが分かり難い。

[ボクなりの解釈]
        受信1受信1        受信2受信2受(改行)
送信1送信1                             送信2送信2(改行) 
信2              受信3(改行)
                  送信3送信3(改行)
[仕様]
・バイナリファイルではなく、テキストファイルのデータです。
・奇数行目が受信データ、偶数行目が送信データです。
・データ間のスペースの数は不定です。
・データ間のスペースは半角スペースのみです。
・各行の文字列は半角スペースで終わる事はありません(?)。
・各データの文字列の長さは不定です。
・改行時、次のデータが行の先頭から始まってる場合は
前のデータの続きと判断します。(スペースが1つでも入れば次データ)
[結果]
送信1送信1
受信1受信1
送信2送信2
受信2受信2受信2
送信3送信3
受信3

[実現方法-例2]
送信データ格納用、受信データ格納用、2つの配列を用意。
送信データ編集用、受信データ編集用、2つの文字列変数を用意。
1行ずつデータを読み込み、ループ。前の行データの残りと連結して、
LTrim で先頭の空白を除き、InStrでスペースを探し、スペースが
見つからなくなるまでデータを切り取り配列に格納。ループエンド。
…をうまく調整w。最後に2つの配列のデータを交互に出力。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加