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