1

2 つのテキスト ファイルがあるとします。

A.txt:

Param1: Value1
Param2: Value2
      .
      .
      .
      .
ParamM: ValueM

B.txt

Param1: Value1
Param2: Value2
      .
      .
      .
      .
ParamN: ValueN
  • A.txt内のパラメーターの数、つまりMは、 B.txt内のパラメーターの数、つまりNより大きくても、小さくても、等しくてもかまいません。
  • 同じパラメーターの値は、 A.txtB.txtで同じである必要はありません。
  • MNは、おそらく最大値 200 に達する可能性があります。
  • パラメータ名は任意です。彼らには数字がありません。上記は単なる説明用でした。

私の目的は、A.txtB.txtをマージすることです。競合が発生した場合、どちらが優先されるかを決定するファイル/メモリ内ストレージがあります。

例えば、

A.txtは次のようになります。

Path: C:\Program\Files
Data: ImportantInfo.dat
Version: 1.2.3
Useless: UselessParameter.txt

B.txtは次のようになります。

Path: C:\ProgramFiles
Data: NotSoImportant.dat
Version: 1.0.0
Useful: UsefulParameter.txt

最終的なテキスト ファイルは次のようになります。

Path: C:\ProgramFiles
Data: ImportantInfo.dat
Version: 1.2.3
Useful: UsefulParameter.txt

これについて考えるための私のアプローチは次のとおりです。

get a line from A.txt
get a line from B.txt
tokenize both by ":"
compare param names
if same
    write A.txt's value to Result.txt
else if different
    write A.txt's line into Result.txt
    write B.txt's line into Result.txt  /* Order doesn't really matter */
repeat above steps until end of both text files

このアプローチでは、A.txtに特定のパラメーターがあり、B.txtにない場合は処理されません。これを行うためのいくつかの軽量ライブラリ/API が存在する場合、非常に役立ちます。コマンドライン ツールを探しているわけではありません (system()呼び出しのオーバーヘッドのおかげです)。

ありがとう!

4

1 に答える 1

2

これは、Map データ型を持つ言語では非常に簡単です。私は次のようにします:

  1. B をすべて読み取り、キーと値の文字列をメモリに格納します

  2. A を読み取り、キーごとに値を上書きする (存在する場合) か、値を追加する (存在しない場合)

  3. Key-Value をファイルに出力する

于 2013-02-19T09:05:40.900 に答える