Оффтоп: я новичок, пытаюсь постигать язык программирования, но мне как самоучке это не быстро идет. Суть задачи: есть текстовый файл (лог от программы, для примера взял его). В каждом предложении текста может быть ключевое слово, или даже несколько раз повторяться одно и тоже слово (пример ключевых слов {"Info", "Trace", "Debug", "Warn"}). Требуется посчитать сколько раз каждое ключевое слово фигурировало в тексте, а если в некоторых предложениях одно и тоже ключевое слово употреблялось более 1 раза, то посчитать за 1 повторение. Предложение имеет вид:{"instance":"2C768A564246", "code":"-1157555488", "product":"", "version":"52065", "component":"Server.Service", "severity":"Trace", "time":"2018-04-29T03:01:10.0609148+03:00", "message":"Vacuum таблицы: \"public\".\"passport\", время выполнения 00:00:00.7131481", "thread":"9", "activity":"", "transaction":"", "exception":""}
Я научился читать текст из файла, но пока не понял как сделать функцию поиска. Мой код для чтения текста из файла:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace ReadFileAndCount
{
class Program
{
static void Main(string[] args)
{
string path = @"d:\Test.log";
string line;
if (File.Exists(path))
{
StreamReader file = null;
try
{
file = new StreamReader(path, Encoding.UTF8);
while ((line = file.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
finally
{
if (file != null)
file.Close();
}
}
Console.ReadKey(true);
}
}
}
Прошу помочь с написанием функции поиска по ключевым словам и выводу количества повторений каждого ключевого слова.
Попытаюсь расписать алгоритм:
Dictionary<string,int>
Где ключ-это слово, а значение- это кол-во встречаемости[!.?]
. Если у вас 1 предложение=1 строчки, то эта проблема отпадает.Split()
(или RegEx.Split()
так как Split()
может захватить знаки препинания...) с делением по пробелу и получаем коллекцию словВы привели такой пример в комментах:
{"instance":"2C768A564246", "code":"-1157555488", "product":"", "version":"52065", "component":"Server.Service", "severity":"Trace", "time":"2018-04-29T03:01:10.0609148+03:00", "message":"Vacuum таблицы: \"public\".\"passport\", время выполнения 00:00:00.7131481", "thread":"9", "activity":"", "transaction":"", "exception":""}
Это похоже на JSON, что может облегчить вам задачу в разы.
Описываете класс, который соответствует этой структуре, далее используете библиотеку для десериализации из JSON, например Json.NET и парой строк кода заполняете класс данными.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Какая команда в XDocument аналогична строке из xmlDocument: pictureBoxItem1ImageLocation = xmlDoc
Грубо говоря, есть основная запись в БД (Processing), есть коллекция - к каким темам относится основная запись (EmailTheme)Для этого написаны следующие...
Пишу я REST клиента и хочется мне его тестами покрыть, а зависеть от внешних сервисов не хочетсяREST API сервиса, к которому подключаться я знаю,...
Сделал авторизацию в webbrowser, но как выйти из учетки вк? Побывал через https://loginvk