Вывести даты из файла в формате - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Подскажите пожалуйста как решить: "Вывести даты из файла в формате « ДД Месяц ГГ г.», где ДД – день двузначным числом, Месяц - русское наименование месяца в родительном падеже, ГГ – последние две цифры года. Каждая дата в файле находится на отдельной строчке. Первое число – год, второе число – день, третье число – номер месяца. Элементы даты в файле разделены запятой." Вот что я навоял:
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();
        }
    }
}
Тесты и результат всего этого действа я прикрепил. Хочу сделать такие проверки: 1) 2012,24,13 (значение месяц > 12 (кол-во месяцев) и значит ошибка "неверная строка") 2) 2012,18,_ (здесь значение месяца вообще не указано, значит надо проверить, есть ли в значении месяц хоть что-то) 3) 1977,,2 (отсутствует значение на месте "дня", наверное надо проверить, есть ли на этом месте какая-нибудь инфа или нет) 4) ,9,5 (отсутствует год) 5) 1980,12,января (значение указано не цифрами а текстом, то есть тип переменой не инт., поэтому тоже ошибка) 6) 2002,24,06 (здесь всё считается, но вот как проигнорировать ноль, мне не понятно...) Помогите пожалуйста достигнуть понимания решения подобных задач. )) Всех с новым годом!)

Решение задачи: «Вывести даты из файла в формате»

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("Неверный формат входной строки");
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.167 из 5
Похожие ответы