2

2つのテキストファイルがC:\Test1.txtありC:\Test2.txtます。

C:\Test1.txtデータは、スペース( "")で区切られた列で構成されます。

Data Data
Data Data
Data Data

C:\Test2.txtデータは次のもので構成されます。

Data
Data
Data

Test2列1のフィールドは、列1Test1のフィールドです。Test1から一致するフィールドを追加しようとしています。したがって、たとえば:

C:\ Test1.txt

Mercedez Silver
Bentley Black
Audi Blue
BMW White
Honda Gold

C:\ Test2.txt

BMW
Mercedez
Bentley
Audi
Honda

コードを実行した後:

C:\ Test2.txt

BMW White
Mercedez Silver
Bentley Black
Audi Blue
Honda Gold
4

2 に答える 2

3

したがって、txt1にもあるtxt2のすべての車を検索し、txt1からtxt2の行を上書きするだけです。次に、これは機能するはずです:

Dim l1Infos = From l1 In IO.File.ReadAllLines("C:\Test1.txt")
              Select New With {.Line = l1, .Tokens = l1.Split(" "c)}
Dim result = From l1 In l1Infos
             Join l2 In IO.File.ReadAllLines("C:\Test2.txt")
             On l1.Tokens(0) Equals l2
             Select l1.Line
IO.File.WriteAllLines("C:\Test2.txt", result)

例外的なデータについてはまだ安全ではないことに注意してください。

于 2012-05-23T23:08:58.197 に答える
0

したがって、技術用語でのあなたのタスクはこれです(元の質問とコメントによると):

  • 最初のファイルが自動車の色の辞書であると仮定します。
  • 2番目のファイルがメーカーのリストであると想定します。
  • 最初のファイルを使用して、それらのメイクに一致するものを見つける必要があります。
  • 両方の入力ファイルの空の行を無視します。
  • makeが見つからない場合は、空の文字列を色として入力します。

このための古い学校のソリューションは、3つの部分に分けることができます。

'read the first file into a dictionary of make to color
Dim dict As New Dictionary(Of String, String)
For Each line As String In IO.File.ReadAllLines("C:\Test1.txt")
  Dim a() As String = line.Split({" "}, StringSplitOptions.RemoveEmptyEntries)
  If a.Length = 0 Then Continue For 'ignore blank lines
  Dim key As String = a(0)
  Dim value As String = a(1)
  dict.Add(key, value)
Next

'find matches for makes listed in the second file and prepare output
Dim outputLines As New List(Of String)
For Each key As String In IO.File.ReadAllLines("C:\Test2.txt")
  If key = String.Empty Then Continue For 'ignore blank lines
  Dim value As String = Nothing
  dict.TryGetValue(key, value) 'leave Color blank if not found
  outputLines.Add(String.Format("{0} {1}", key, value))
Next

'write output
IO.File.WriteAllLines("C:\Test3.txt", outputLines)

拡張性を考慮して構築されているため、上記はニーズに合わせてさらに簡単に調整できます。ここで、別のファイル(#3)に出力していることに注意してください。これは、テスト目的で入力を保持するためです。何か問題が発生した場合に備えて入力を保持したいので、プログラムをすばやく修正して再実行する必要があります。期待どおりに機能することを確認した後、コードを変更してファイル#2を置き換えることができます。

于 2013-12-22T00:40:14.620 に答える