Обработка списков

Challenger

Client
Регистрация
06.05.2016
Сообщения
22
Благодарностей
3
Баллы
3
Столкнулся с проблемой при работе со списками, форум прошерстил через поиск, но так и не нашел подходящего решения для вроде бы простой задачи.

1) Есть список, нужно к строкам, содержащим вопросительные предлоги "как" "что" и т.д. добавить в конец знак вопроса. Сама реализация понятна
-взять строку и положить в переменную
-через https://zennolab.com/discussion/threads/kak-v-peremennoj-proverit-nalichie-slova.18725/#post-120354 проверить наличие предлога
-если предлог есть, к переменной строки добавить вопрос и пересохранить ее.

Где у меня затык - не могу найти, как искать дословное совпадение, а не вхождение. Т.е. чтобы во фразу "Как вырастить пальму" вопрос добавлялся, а во фразу "Мыши плакали, но ели КАКтус" вопрос не добавлялся.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 116
Баллы
113
как искать дословное совпадение, а не вхождение. Т.е. чтобы во фразу "Как вырастить пальму" вопрос добавлялся, а во фразу "Мыши плакали, но ели КАКтус" вопрос не добавлялся.
Попробуйте такой критерий поиска вхождения: "Как ", т.е. с пробелом.
 
  • Спасибо
Реакции: Challenger

Challenger

Client
Регистрация
06.05.2016
Сообщения
22
Благодарностей
3
Баллы
3
Я пробовал, там получается очень много совпадений, когда будет браться мусор и не будет браться то что нужно. Например, если фраза начинается с "Как " то в выборку попадут все слова, которые на "как" заканчиваются, и стоят в середине фразы.

По идее можно как-то через регулярку по точному вхождению проверять через \bпеременная\b но у меня пока ума не хватает это всунуть в c# для например, 20 предлогов. Сижу ковыряю стэковерфлов)) В любом случае, спасибо за подсказку.
 

Challenger

Client
Регистрация
06.05.2016
Сообщения
22
Благодарностей
3
Баллы
3
Пока через костыли сделал выборкой через подсписок через регулярное выражение вида \b{-Variable.test2-}\b (для каждого предлога вопросительного придется делать экшен, чтоб не путать их через |), индусский подход) Если найду более годное решение, выложу для сообщества)
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
C#:
var sourceList = project.Lists["SourceList"];

var line = "";
string[] searchKeyword = { "как", "что", "зачем" };

for (int i = 0; i < sourceList.Count; i++)
{
    line = sourceList[i];
    var list = line.Split(new [] { " " }, StringSplitOptions.RemoveEmptyEntries).ToList();

    for (int j = 0; j < searchKeyword.Length; j++)
    {
        if (list.Contains(searchKeyword[j], StringComparer.CurrentCultureIgnoreCase))
        {
            FileSystem.FileAppendString(project.Directory + "\\Result.txt", line + "?", true);
            break;
        }
    }
}
 
  • Спасибо
Реакции: Challenger

Challenger

Client
Регистрация
06.05.2016
Сообщения
22
Благодарностей
3
Баллы
3
Спасибо, решение работает, но сделал немного по другому на кубиках, чтобы можно было подключать внешние файлы. Буду учить c#.
 

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