Эй, я новичок в C #, поэтому я просто экспериментирую с тем, как я могу использовать его для выполнения задач. Я хочу, чтобы он прошел через текстовый файл и убедился, что каждая строка верна, пример формата текстового файла:
;irrelevant
;ignored
table Driver
number 123
name Name123
chassis Mondeo
rank 1
race_image 100
body_style ccar
wheel_basename vauxhall
end
table Driver
number 178
name Dan#178
chassis XJS
rank 1
race_image 100
body_style ccar
end
table Driver
number 76
name Timmy76!
chassis Lexus
rank 1
race_image 100
body_style ccar
wheel_basename lexb
end
end
Он должен игнорировать пустые строки или строки, содержащие только пробелы, и не учитывать регистр. Пока он проходит, после проверки каждой строки я бы хотел, чтобы он отображал его в окне консоли, поэтому, как только он обнаружит что-то неправильное, он может показать пользователю, где ошибка; так что будет постоянный поток строк, пока он не обнаружит что-то не так.
Его нужно пройти и проверить каждый раздел.
- Если присутствует «драйвер таблицы», проверьте следующую строку, иначе остановитесь и сообщите пользователю
- Проверьте «число», затем проверьте фактический номер после 1–3 цифр, иначе остановитесь и сообщите пользователю
- Проверьте «имя», фактическое значение имени после может быть любым, иначе остановитесь и сообщите пользователю
- Проверьте фактическое значение шасси «шасси» после того, как оно должно быть указанной строкой из списка, иначе остановитесь и сообщите пользователю
- Проверьте «ранг», затем проверьте, что фактический номер ранга находится в диапазоне от 1 до 10, иначе остановитесь и сообщите пользователю
- Если присутствует «race_image 100», проверьте следующую строку, иначе остановитесь и сообщите пользователю
- Если присутствует 'body_style ccar', проверьте следующую строку, иначе остановитесь и сообщите пользователю
- Строка wheel_basename необязательна.
- Если присутствует 'wheel_basename', проверьте значение после указанной строки из списка, иначе остановитесь и сообщите пользователю
- Если «wheel_basename» отсутствует, проверьте следующую строку
- Если есть 2 конца, каждый в другой строке, то, возможно, будет функция «перейти» и отобразится сообщение о завершении проверки.
- Если есть только 1 конец, необходимо снова запустить процесс в следующей таблице драйверов.
Код, который я написал на данный момент, пропускает строки, начинающиеся с точки с запятой, как и предполагалось. Но когда я пытаюсь заставить его проверять «драйвер таблицы», он снова начинает читать с начала текстового файла.
using (StreamReader textFile = new StreamReader("Drivers.txt"))
{
foreach (var line in File.ReadLines("Drivers.txt"))
if (line.StartsWith(";"))
{
Console.WriteLine(line);
continue;
}
foreach (var line in File.ReadLines("Drivers.txt"))
if (line.StartsWith("table driver", StringComparison.CurrentCultureIgnoreCase))
{
Console.WriteLine(line);
continue;
}
else
{
Console.WriteLine("ERROR");
// Console.ReadLine();
}
}
XMLбудет лучшим выбором для вас. Запишите файл вXML, его будет легко разобрать - person Shaharyar   schedule 13.12.2013