Вывести даты из файла в формате - C#
Формулировка задачи:
Здравствуйте. Подскажите пожалуйста как решить:
"Вывести даты из файла в формате « ДД Месяц ГГ г.», где ДД – день двузначным числом, Месяц - русское наименование месяца в родительном падеже, ГГ – последние две цифры года. Каждая дата в файле находится на отдельной строчке. Первое число – год, второе число – день, третье число – номер месяца. Элементы даты в файле разделены запятой."
Вот что я навоял:
Тесты и результат всего этого действа я прикрепил.
Хочу сделать такие проверки:
1) 2012,24,13 (значение месяц > 12 (кол-во месяцев) и значит ошибка "неверная строка")
2) 2012,18,_ (здесь значение месяца вообще не указано, значит надо проверить, есть ли в значении месяц хоть что-то)
3) 1977,,2 (отсутствует значение на месте "дня", наверное надо проверить, есть ли на этом месте какая-нибудь инфа или нет)
4) ,9,5 (отсутствует год)
5) 1980,12,января (значение указано не цифрами а текстом, то есть тип переменой не инт., поэтому тоже ошибка)
6) 2002,24,06 (здесь всё считается, но вот как проигнорировать ноль, мне не понятно...)
Помогите пожалуйста достигнуть понимания решения подобных задач. )) Всех с новым годом!)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace ReadFiles { class Program { static void Main(string[] args) { int a = 0; string textShow; int t = int.Parse(Console.ReadLine()); //проверка на наличе файла if (!File.Exists("test" + t + ".txt")) { Console.WriteLine("error"); return; } StreamReader sr2 = new StreamReader("test" + t + ".txt"); //вывод содержимого while (!sr2.EndOfStream) //пока не закончился файл { String str = sr2.ReadLine(); //удаляем запятые str = str.Replace(" ", ""); //если в строке символов больше if (str.Length > 10) { textShow = "неверная дата"; } //выводим день string day; if (str.IndexOf(',', 5) == 6) { day = str.Substring(5, 1); } else { //Console.WriteLine(str.Substring(5, 2)); day = str.Substring(5, 2); } //Выводим месяц int begin = str.IndexOf(',',5)+1; int count = str.Length - begin; string month = str.Substring(begin, count); string year = str.Substring(2, 2); if (Convert.ToInt32(day) > Convert.ToInt32("31")) { day = "неверный день"; } //если if (month == "1") { month = "Января"; } else if (month == "2") { month = "Февраля"; } else if (month == "3") { month = "Марта"; } else if (month == "4") { month = "Апреля"; } else if (month == "5") { month = "Мая"; } else if (month == "6") { month = "Июня"; } else if (month == "7") { month = "Июля"; } else if (month == "8") { month = "Августа"; } else if (month == "9") { month = "Сентября"; } else if (month == "10") { month = "Октября"; } else if (month == "11") { month = "Ноября"; if (day == "31") { Console.WriteLine("невозможная дата"); break; } } else if (month == "12") { month = "Декабря"; } else { month = "месяц неверный"; } //Console.WriteLine(textShow); Console.WriteLine(day +" "+ month + " "+ year + " г."); a++; } //закрытие файла sr2.Close(); } } }
Решение задачи: «Вывести даты из файла в формате»
textual
Листинг программы
CultureInfo russia = new CultureInfo("ru-RU"); string s = "2012,24,12"; DateTime d; if (DateTime.TryParseExact(s, new[]{"yyyy,d,M","yy,d,M"}, CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind | DateTimeStyles.AllowWhiteSpaces, out d)) { Console.WriteLine("{0}", d.ToString("d MMMM yy г.", russia)); } else { Console.WriteLine("Неверный формат входной строки"); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д