Снипет C# - Поиск нескольких совпадений в переменной

dkii

Client
Регистрация
09.08.2015
Сообщения
1
Благодарностей
0
Баллы
1
Здравствуйте, подскажите пожалуйста решение в виде снипета, необходимо проверить наличия слов в тексте (Variable0), слова для поиска хранятся в переменных t1, t2, t3 и т.д. в формате слово1|слово2|слово3.
Сейчас берется только первое совпадение, но бывает и такое что совпадений несколько, есть ли решение?
К примеру t1 и t6. По возможности вернуть t1 и t6 в переменную или добавить в список.
То что есть на данный момент:

1:
string pattern1 = project.Variables["t1"].Value;
string pattern2 = project.Variables["t2"].Value;
string pattern3 = project.Variables["t3"].Value;
string pattern4 = project.Variables["t4"].Value;
string pattern5 = project.Variables["t5"].Value;
string pattern6 = project.Variables["t6"].Value;
string pattern7 = project.Variables["t7"].Value;
string pattern8 = project.Variables["t8"].Value;
string text = project.Variables["Variable0"].Value;
if (!string.IsNullOrWhiteSpace(Regex.Match(text, pattern1).Value))
{
    return "t1";
}
else if (!string.IsNullOrWhiteSpace(Regex.Match(text, pattern2).Value))
{
    return "t2";
}
else if (!string.IsNullOrWhiteSpace(Regex.Match(text, pattern3).Value))
{
    return "t3";
}
else if (!string.IsNullOrWhiteSpace(Regex.Match(text, pattern4).Value))
{
    return "t4";
}
else if (!string.IsNullOrWhiteSpace(Regex.Match(text, pattern5).Value))
{
    return "t5";
}
else if (!string.IsNullOrWhiteSpace(Regex.Match(text, pattern6).Value))
{
    return "t6";
}
else if (!string.IsNullOrWhiteSpace(Regex.Match(text, pattern7).Value))
{
    return "t7";
}
else if (!string.IsNullOrWhiteSpace(Regex.Match(text, pattern8).Value))
{
    return "t8";
}
 

Moadip

Client
Регистрация
26.09.2015
Сообщения
509
Благодарностей
823
Баллы
93
слова для поиска хранятся в переменных t1, t2, t3
Не самый оптимальный вариант. А если слов надо будет искать 20? Или 30?
Лучше сделать список, туда загнать слова которые надо найти. И их искать в исходном тексте.
C#:
var text = "С другой стороны постоянный количественный рост и сфера нашей активности обеспечивает широкому кругу (специалистов) участие в формировании системы обучения кадров";
var whatFind = new List<string>() // вместо этого списка, список в зенке, с нужными словами
{
    "стороны",
    "рост",
    "активности",
    "kienroviw"
};

var finded = whatFind
    .Where(word => text.ToLower().Contains(word.ToLower()))
    .ToList();

project.Lists["Список с найденными словами"].AddRange(finded);
 
  • Спасибо
Реакции: dkii

RexSel

Client
Регистрация
20.02.2016
Сообщения
12
Благодарностей
0
Баллы
1
Не самый оптимальный вариант. А если слов надо будет искать 20? Или 30?
Лучше сделать список, туда загнать слова которые надо найти. И их искать в исходном тексте.
C#:
var text = "С другой стороны постоянный количественный рост и сфера нашей активности обеспечивает широкому кругу (специалистов) участие в формировании системы обучения кадров";
var whatFind = new List<string>() // вместо этого списка, список в зенке, с нужными словами
{
    "стороны",
    "рост",
    "активности",
    "kienroviw"
};

var finded = whatFind
    .Where(word => text.ToLower().Contains(word.ToLower()))
    .ToList();

project.Lists["Список с найденными словами"].AddRange(finded);
Подскажите, а как сделать так, чтобы поиск был с точным совпадением. Если к примеру, добавить слово "сторон", то оно тоже попадает в итоговый список
 

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