2010-02-01 5 views
1

이것은 아마도 그렇게 어렵지 않습니다. 하지만 두 개의 텍스트 파일이 있습니다. 처음에는 특정 키워드 목록이 있습니다. 이들 키워드가 콤보 박스에 입력되면 각각 하나씩.vb.net - 특정 문자열에서 텍스트 파일을 검색하고 해당 지점에서 읽기

이제이 콤보 박스에서 항목 중 하나를 선택할 때 동일한 키워드에 대해 다른 텍스트 파일을 검색하고 그 지점에서 다음 키워드로 읽으려고합니다. 그리고 각 줄을 목록 상자에 넣습니다. 희망은 나 자신을 이해하게한다.

아마도이 목적을 위해 INI 파일을 사용해야하며, 실제로는 문제가되지 않습니다.

텍스트 파일의 구조는 다음과 같습니다. 텍스트 파일 1 :

London 
Oslo 
New York 
Hamburg 
Amsterdam 

두 번째 텍스트 파일의 구조는 다음과 같습니다. Textfile2 :

'London' 
Apples 
Oranges 
Pears 

'Oslo' 
Pasta 
Salami 
Monkeyballs 

'New York' 
Dada 
Duda 
Dadadish 

기타 등

이 가능합니까? 이런 식으로하고 싶은 이유는 완전히 동적 인 시스템을 만드는 것입니다. 하나는이 텍스트 파일에 저장된 모든 정보에 의존합니다. 나는 나중에이 결과들로부터 꽤 복잡한 문자열을 만들 예정입니다.

지금까지, 나는 첫 번째 파일을 읽고 콤보 상자에 각 행을 추가하려면이있어 :

Dim oReadMenuFunction as System.IO.StreamReader 
oReadMenuFunction = IO.File.OpenText("textfile1.txt") 

Do While oReadMenuFunction.Peek <> -1 
    Dim LineIn as String = oReadMenuFunction.ReadLine() 
    Combobox.Items.Add(LineIn) 
Loop 

답변

1

다음은 두 번째 파일을 구문 분석하는 데 사용할 수있는 샘플 기능입니다. 이 인수로 키워드를 취하고 관련 항목을 반환

Function ReadData(ByRef keyword As String) As IEnumerable(Of String) 
    Dim result = New List(Of String) 
    Using reader = New StreamReader("file2.txt") 
     Dim line As String = reader.ReadLine() 
     Dim take = False 
     Do While line IsNot Nothing 
      If line.StartsWith("'") Then 
       take = False 
      End If 
      If String.Equals("'" + keyword + "'", line) Then 
       take = True 
      End If 
      If take And Not String.IsNullOrEmpty(line) And Not line.StartsWith("'") Then 
       result.Add(line) 
      End If 
      line = reader.ReadLine() 
     Loop 
    End Using 
    Return result 
End Function 

을 그리고 당신은 다음과 같이 사용 :

Dim items = ReadData("London") 
+0

고맙습니다! 나는 그것의 약간을 다시해야했다. 그러나 주된 구조는 매력처럼 일했다! :) –

관련 문제