2016-07-09 4 views
0

좋아, 나는 다음과 같은 텍스트가 포함 "info.txt"라는 이름의 txt 파일을 가지고 :는 C 번호에 후 다음 단어를 읽을

[entry] 
title = Hello World 
info = sometext 
number = 0 
available = -1 

[entry] 
title = All Vids 
info = somemoretext 
number = 1 
available = 0 

[entry] 
title = All pics 
info = somedifferenttext 
number = 2 
available = -1 

[entry] 
title = all music 
info = differenttext 
number = 3 
available = 0 

에 C# 내가하고 싶은 일은이 파일을 열고 "title ="을 검색 한 다음 그 뒤에 단어를 얻은 다음 텍스트 상자 안에 넣는 것입니다. 예를 들어, "title ="을 찾은 후에 textbox1 안에 "Hello World"를 넣고 싶습니다. 그런 다음 "모든 Vids"가 될 또 다른 "제목 ="이 있으면 textbox2 안에 넣고 싶습니다. textbox3, textbox4 등등에 배치되어야하는 "title ="의 인스턴스가 더있는 경우에도 동일한 작업을 수행해야합니다. 이와

 private void button1_Click(object sender, EventArgs e) 
    { 
     List<List<string>> groups = new List<List<string>>(); 
     List<string> current = null; 
     foreach (var line in File.ReadAllLines(@"C:\Users\Rohul\Documents\info.txt")) 
     { 
      if (line.Contains("title") && current == null) 
       current = new List<string>(); 
      else if (line.Contains("info") && current != null) 
      { 
       groups.Add(current); 
       current = null; 
      } 
      if (current != null) 
      richTextBox1.Text = line; 
     } 
    } 

문제는 전체 라인을 읽고 마지막 항목은 누군가가 나를 도울 수 있기를 바랍니다

를 읽기 :

이 내가 다른 답변에서 발견되는 일 것입니다. 미리 감사드립니다.

+2

_requirements_를 잘 설명해 주셨습니다. 수행하지 않은 작업은 문제를 해결하기위한 노력을 보여주는 것입니다. 누군가가 당신을 위해 코드를 작성하기를 기다리고 있습니까? [도움말]과 특히 [ask]를 읽어주십시오. – Steve

+0

텍스트 파일의 모든 행을 반복하기 위해'For-Loop'을 사용하고,'IF' 문을 사용하여 * title = *로 시작하는 줄을 확인하십시오. 이것은 초등, 초등 학교의 조카가 이것을 코드화 할 수 있습니다. Google이 제공 한 조건을 Google에 알려 주시고 직접 해결해보십시오. [so]에 오신 것을 환영합니다. 전문 프로그래머를위한 웹 사이트입니다. 저의 집에서 일하는 사이트가 아닙니다. 행운을 빕니다! –

+0

도움을 주셔서 감사합니다. 나는 지금까지 작업 한 것을 추가했습니다. 나는 자기가 코드 작성법을 배우려고 노력하고있어 좀 새로운 것 같습니다 –

답변

2

데이터가 data.txt이라는 파일에 있다고보십시오.

로직 : 데이터를 읽고, 새 라인으로 나뉘며, "title ="을 포함한 라인을 찾습니다. 해당 식별자를 제거하고 나머지 줄을 가져옵니다.

string data = File.ReadAllText("data.txt"); 
string identifier = "title ="; 

List<string> results = 
    data.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries) 
    .Where(x => x.Contains(identifier)) 
    .Select(x => x.Replace(identifier, String.Empty).Trim()).ToList(); 

그 후, 당신은 results에 문자열 목록을해야합니다. 당신이 원하는대로하십시오.

당신이 다음 시도와 같은 라인으로 라인을 읽을 필요가있는 경우 : 당신은 INI 파일을 읽으려는처럼

string identifier = "title ="; 
string data = File.ReadAllText("data.txt"); 

List<String> results = new List<string>(); 

foreach(string line in File.ReadAllLines("data.txt")) 
{ 
    if(line.Contains(identifier)) 
    { 
     results.Add(line.Replace(identifier, string.Empty).Trim()); 
    } 
} 
+0

고마워요.이 덕을 보았습니다. D –

0

그것은 소리. 이것이 목적이라면 을보십시오. An INI file handling class using C# 또는 Reading/writing an INI file from StackOverflow.

+0

도움을 주셔서 감사합니다. 네 말이 맞아. 그러나 문제는 제 텍스트 파일을 보면 [Entry]의 여러 인스턴스가 있고 메서드를 사용하여 첫 번째 [Entry] 만 읽을 수 있다는 것입니다. 나는 다른 3을 읽는 법을 모른다 [Entry] –