Есть файл "io.bin" и содержит это:
ID: 1
Current date and time (time UTC): 05.12.2017 12:09:26
Global time: 00:10:00
ID: 2
Current date and time (time UTC): 06.12.2017 13:04:19
Global time: 00:05:30
ID: 3
...
Есть код который должен найти Current date and time (time UTC): 06.12.2017
и вывести все в textBox до следующего пробела, то-есть только это:
ID: 2
Current date and time (time UTC): 06.12.2017 13:04:19
Global time: 00:05:30
Сам код:
private static string getDate, setInfo = "info";
...
private void selectDate_Click(object sender, EventArgs e)
{
getDate = dateTimePicker1.Text;
foreach (string line in File.ReadLines("io.bin"))
{
if (line.Contains("Current date and time (time UTC): " + getDate))
{
//тут надо реализовать хождение по строкам, Но как это сделать?
}
StreamReader streamReader = new StreamReader("io.bin");
while (setInfo != null)
{
setInfo = streamReader.ReadLine();
textBox1.Text += setInfo + " \r\n";
}
}
}
UPD: Немного не закончил свой вопрос. Надо сделать так, чтобы эта часть кода потом подружилась с вашей реализацией
StreamReader streamReader = new StreamReader("io.bin");
while (setInfo != null)
{
setInfo = streamReader.ReadLine();
textBox1.Text += setInfo + " \r\n";
}
То есть: программа ищет по строкам с помощью if (line.Contains("Current date and time (time UTC): " + getDate))
строкуCurrent date and time (time UTC): 05.12.2017
пропуская все остальные, затем берет и копирует целый блок (от пробела до пробела). И выводит в Text Box
ID: 2
Current date and time (time UTC): 06.12.2017 13:04:19
Global time: 00:05:30
var massline = File.ReadAllLines("io.bin");
for (int i = 0; i < massline.Count(); i++)
{
var line = massline[i];
if (line.Contains("Current date and time (time UTC): "+ getDate))
{
//пример "хождения" по строкам
Console.WriteLine(massline[i-1]);
Console.WriteLine(massline[i]);
Console.WriteLine(massline[i+1]);
}
}
С учетом upd:
var massline = File.ReadAllLines("io.bin");
for (int i = 0; i < massline.Count(); i++)
{
var line = massline[i];
if (line.Contains("Current date and time (time UTC): "+ getDate))
textBox1.Text +=massline[i-1] + " \r\n" +massline[i] + " \r\n"+ massline[i+1];
}
Как вариант с использованием LINQ
var file = @"......";
var pattern = "Current date and time (time UTC): 06.12.2017 13:04:19";
var lines = File.ReadLines(file) // Начинаем читать файл построчно
.SkipWhile(line => !line.Contains(pattern)) // пропускаем все строки до совпадения с паттерном
.Skip(1) // пропускаем строку Current date and time (time UTC): 06.12.2017 13:04:19
.TakeWhile(line => !string.IsNullOrWhiteSpace(line)) // Считывем все строки от паттерна до первой пустой строки
.ToArray(); // материализуем коллекцию
UPD. Сложить массив строк в одну строку с сепаратором можно так:
textBox1.Text += String.Join(Environment.NewLine, lines);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Доброго всем! Есть строка, которая выдает ошибку при конвертации:
ЗдравствуйтеИмеется строка, например:
Имеется xml-документ с несколькими элементами rect и lineВозможно ли получить доступ к редактированию любого из этих элементов при открытии соответствующего...
Пытаюсь сделать программу для отображения списка посещенных сайтовИдея такова, что пользователи пользуясь браузерами, все сайты сохранялись...