Поиск года в файле - C#
Формулировка задачи:
В текстовом файле, в каждой строке хранятся данные: ФИО автора, название, год издания, количество страниц. Как организовать поиск выводящий информацию о книгах, выпущенных после указанного года?
Вот что имеем:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Text.RegularExpressions;
namespace ConsoleApplication7
{
class Program
{
static void Main(string[] args)
{
string stroka;
Console.WriteLine("Введите год:");
string year = Console.ReadLine();
FileStream aFile = new FileStream("Рез.txt", FileMode.OpenOrCreate);
StreamReader op = new StreamReader("Библ.txt", Encoding.Default);
Regex regex = new Regex(year, RegexOptions.IgnoreCase);
StreamWriter sw = new StreamWriter(aFile);
stroka = op.ReadLine();
Console.WriteLine("Результат поиска:");
while (stroka != null)
{
string[] Mass = stroka.Split(';');
string text = Mass[0];
if (regex.IsMatch(text))
{
for (int i = 0; i < Mass.Length; i++)
{
Console.Write(Mass[i] + "\t");
sw.Write(Mass[i] + ";");
}
sw.WriteLine();
Console.WriteLine();
}
stroka = op.ReadLine();
}
sw.Close();
Console.ReadKey();
}
}
}Решение задачи: «Поиск года в файле»
textual
Листинг программы
static void Main(string[] args)
{
string stroka;
Console.WriteLine("Введите год:");
string year = Console.ReadLine();
FileStream aFile = new FileStream("Рез.txt", FileMode.OpenOrCreate);
StreamReader op = new StreamReader("Библ.txt", Encoding.Default);
StreamWriter sw = new StreamWriter(aFile);
stroka = op.ReadToEnd();
Console.WriteLine("Результат поиска:");
if (stroka != null)
{
string[] Mass = stroka.Split(new Char[] {'\n'});
foreach(string mas in Mass)
{
Match m;
string pat = @"\w*;";
string pat1 = @"\d*";
m = Regex.Match(mas, pat );
string mas1=mas.Replace(Convert.ToString(m), "");
m = Regex.Match(mas1, pat1);
string ch = Convert.ToString(m).Replace("{}", "");
if(Convert.ToInt32(ch)>Convert.ToInt32(year))
{
Console.WriteLine(mas);
sw.WriteLine(mas);
}
}
}
else { Console.WriteLine("Error"); }
//stroka = op.ReadLine();
sw.Close();
Console.ReadKey();
}
}
}