Вывести даты из файла в формате - 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("Неверный формат входной строки");
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д