2012-05-23 5 views
2

두 개의 텍스트 파일 C:\Test1.txtC:\Test2.txt이 있습니다.VB.NET에서 일부 파일 편집

Data Data 
Data Data 
Data Data 

C:\Test2.txt 데이터 구성 :

C:\Test1.txt 데이터 공간 ("")에 의해 분리 된 열 구성 Test2를 열 1

Data 
Data 
Data 

필드하는 1 열의 필드이다 Test1. 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 

답변

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) 

그것은 아직 예외 데이터에 안전하지 않습니다.

+0

안녕하세요. 숙제가 아닙니다. 미안하지만 어떻게 내가 지금까지 코딩 한 게시물을 게시 할 수 있습니까? 나는 어려움을 겪고있다 : ( – user1413746

+0

Tim, 코딩이 좋아 보인다.) 1) 빈 줄을 무시하는 것이 어려울 까? 2) 차가 다른 텍스트 파일에서 발견되지 않으면 비워 둔다. – user1413746

+0

@ user1413746 : 무엇이 어려워 야합니까? .NET 3.5 이상을 사용하고 있다면 복사/붙여 넣기를 할 수 있습니다. 이미 언급했듯이, 파일에 더 많은 공백이 포함되어 있다면 안전하지 않습니다. 하지만 어쨌든 당신에게 아이디어를 줄 것입니다. 기본적으로 파일 2의 모든 줄을 파일 1의 일치하는 줄로 겹쳐 쓰고 있습니다 (차에 따라). –

0

그래서 기술적 인 측면에서 귀하의 작업이 (원래의 질문과 의견에 따라)입니다 :

  • 는 첫 번째 파일은 자동차의 사전 색상으로 만들어 가정합니다.
  • 두 번째 파일이 make의 목록이라고 가정합니다.
  • 첫 번째 파일을 사용하여 해당 제작자와 일치하는 항목을 찾아야합니다.
  • 두 입력 파일에서 빈 줄을 무시하십시오.
  • 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가 예상대로 작동 한 후에 코드를 바꿀 수 있습니다.