количество строк содержащих слово с помощью c#

ammagama

Client
Регистрация
25.09.2009
Сообщения
78
Благодарностей
10
Баллы
8
Помогите пожалуйста, с помощью c# нужно взять переменную (слово) и подсчитать в скольких строках в одном списке (лист) содержится эта переменная и записать это количество строк в новую переменную (число).
 

arhip1985

Client
Регистрация
31.10.2011
Сообщения
2 955
Благодарностей
781
Баллы
113
C#:
//подготавливаем регулярное выражение
var word_for_find = project.Variables["Переменная в которой слово для поиска"].Value;
var regex_for_find = new System.Text.RegularExpressions.Regex(word_for_find);

//объявляем переменную для записи количества строк с совпадением
int count_find_word=0;

//объявляем переменную списка
var my_list = project.Lists["Ваш список"];

//перебираем в цикле все строки и подсчитываем количество строк со словом
for(int i=0; i < my_list.Count; i++)
    {
        var stroka_spiska = my_list[i];
     
        if (regex_for_find.IsMatch(stroka_spiska))
        {
            count_find_word++;     
        }
    }
return count_find_word;
 
  • Спасибо
Реакции: ammagama

ammagama

Client
Регистрация
25.09.2009
Сообщения
78
Благодарностей
10
Баллы
8
Спасибо, заработало. Единственное но, когда я попробовал использовать это для подсчета доменов, то при запросе не учитывает " . "(точку). Например запускаю подсчет доменов введя переменной такое значение ".ga/". В итоге ищет по переменной "ga/"
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 607
Благодарностей
4 600
Баллы
113
Спасибо, заработало. Единственное но, когда я попробовал использовать это для подсчета доменов, то при запросе не учитывает " . "(точку). Например запускаю подсчет доменов введя переменной такое значение ".ga/". В итоге ищет по переменной "ga/"
\.ga/
 
  • Спасибо
Реакции: ammagama

SoUp1

Client
Регистрация
15.09.2013
Сообщения
134
Благодарностей
41
Баллы
28
Код:
var slovo = project.Variables["Переменная в которой слово для поиска"].Value;
var list = project.Lists["Ваш список"];
int count=0;
foreach(var stroka_spiska in list)
    {
        if (stroka_spiska.Contains(slovo))
         count++;
    }
return count;
 

ammagama

Client
Регистрация
25.09.2009
Сообщения
78
Благодарностей
10
Баллы
8

ammagama

Client
Регистрация
25.09.2009
Сообщения
78
Благодарностей
10
Баллы
8
Код:
var slovo = project.Variables["Переменная в которой слово для поиска"].Value;
var list = project.Lists["Ваш список"];
int count=0;
foreach(var stroka_spiska in list)
    {
        if (stroka_spiska.Contains(slovo))
         count++;
    }
return count;
так понимаю, переменная count должна отдавать количество раз, но все время 0
 
Последнее редактирование:

btr

Client
Регистрация
21.09.2015
Сообщения
71
Благодарностей
15
Баллы
8
Код:
var slovo = project.Variables["Переменная в которой слово для поиска"].Value;
var list = project.Lists["Ваш список"];
int count=0;
foreach(var stroka_spiska in list)
    {
        if (stroka_spiska.Contains(slovo))
         count++;
    }
return count;
как тоже самое сделать с текстовым файлом?
 

SHILY

Client
Регистрация
05.06.2016
Сообщения
258
Благодарностей
304
Баллы
63
как тоже самое сделать с текстовым файлом?
Если нужно точно так же, а значит не количество повторяющихся слов в тексте, а именного количество строк в которых встречается слово, то так:
C#:
var searchWord = project.Variables["SEARCH_WORD"].Value;
var pathFile = @"C:\Users\ILYA\Desktop\test.txt";

var text = new List<string>(File.ReadAllLines(pathFile).Where(x => !string.IsNullOrWhiteSpace(x)));
var _counter = 0;

if (!string.IsNullOrWhiteSpace(searchWord) && text.Count != 0) text.ForEach(x => {if (x.Contains(searchWord)) _counter++;});

return _counter;

На всякий случай, вот подсчет заданных слов в файле (надеюсь, регулярку верно составил):
C#:
var searchWord = project.Variables["SEARCH_WORD"].Value;
var pathFile = @"C:\Users\ILYA\Desktop\test.txt";

var text = new List<string>(Regex.Matches(File.ReadAllText(pathFile), @"\b[a-zA-Z0-9а-яА-Я]{2,}\b").Cast<Match>().Select(x => x.Value));
var _counter = 0;

if (!string.IsNullOrWhiteSpace(searchWord) && text.Count != 0) text.ForEach(x => {if (x.Contains(searchWord)) _counter++;});

return _counter;
 
Последнее редактирование:
  • Спасибо
Реакции: btr

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)