2016-07-09 3 views
0

Ok У меня есть текстовый файл с именем «info.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 =», я хочу, чтобы он помещал «Hello World» внутри textbox1. Тогда, если есть еще один «title =», который будет «All Vids», я хочу поместить его в текстовое поле2. То же самое должно быть сделано, если есть больше экземпляров «title =», которые должны быть помещены в textbox3, textbox4 и т. Д.

Это то, что я работал, на котором я нашел другой ответ:

 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_, что вы еще не сделали, чтобы показать какие-либо усилия для решения проблемы. Вы просто ждете, когда кто-нибудь напишет код для вас? Пожалуйста, прочитайте [help] и, в частности, [ask] – Steve

+0

Используйте «For-Loop» для итерации по всем строкам в текстовом файле, затем используйте инструкцию 'IF' для проверки строк, начинающихся с * title = *. Это элементарно, мой племянник в начальной школе мог это кодировать. Пожалуйста, 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. Делай все, что хочешь.

Если вам нужно читать построчно, как вы пробовали, то:

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

Похоже, вы пытаетесь прочитать INI-файлов. Если это ваша цель, посмотрите на эту статью An INI file handling class using C# или Reading/writing an INI file from StackOverflow.

+0

Спасибо за помощь. Да, ваше собственное право. Но проблема в том, что если вы посмотрите на мой текстовый файл, у него есть несколько экземпляров [Entry], и я могу только прочитать первый [Entry], используя ваш метод. Я не знаю, как читать другие 3 [Entry] –

Смежные вопросы