Удаление стоп-слов

soprano

Client
Регистрация
25.08.2011
Сообщения
796
Благодарностей
841
Баллы
93
Нужно удалить из текста слова по маске - предлоги.
C#:
            string tag = "В студёную зимнюю пору я из лесу ехал около реки";
            string[] substr = { " без ", " для ", " на ", " в ", " около ", " перед ", " с ", " и ", " из ", " за ", " близ ", " вместо ", " вне ", " до ", " во ", " из-за ", " из-под ", " изо ", " к ", " ко ", " кроме ", " между ", " над ", " о ", " об ", " от ", " по ", " под ", " при ", " про ", " ради ", " со ", " сквозь ", " среди ", " у ", " через ", " Без ", " Для ", " На ", " В ", " Около ", " Перед ", " С ", " И ", " Из ", " За ", " Близ ", " Вместо ", " Вне ", " До ", " Во ", " Из-за ", " Из-под ", " Изо ", " К ", " Ко ", " Кроме ", " Между ", " Над ", " О ", " Об ", " От ", " По ", " Под ", " При ", " Про ", " Ради ", " Со ", " Сквозь ", " Среди ", " У ", " Через " };
            foreach (string x in substr)
            {
                tag.Replace(x, "");
            }
Этот код вообще не работает. Кто-нибудь подскажет ошибку?
 

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 021
Благодарностей
1 383
Баллы
113

radv

Client
Регистрация
11.05.2015
Сообщения
3 673
Благодарностей
1 859
Баллы
113
Этот код вообще не работает. Кто-нибудь подскажет ошибку?
Ответ уже есть выше, добавлю немного пояснения.
Во первых нужно учитывать регистр символов иначе не все значения будут заменены. (нужно привести всю строку в нижний регистр .ToLower() и учитывать количество пробелов (лучше всего один пробел после, а не по обоим сторонам иначе слова слипнутся после замены).
Во вторых в процессе замены, новое значение никуда не помещается, т.е. замена по факту происходит, но ее просто не видно, так как она не сохраняется никуда..
 
  • Спасибо
Реакции: soprano

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