Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2011, 19:38   #1
wmzvov
Пользователь
 
Аватар для wmzvov
 
Регистрация: 16.03.2010
Сообщений: 12
Вопрос Проверка содержится ли данный набор слов в тексте

Здравствуйте! Имеется набор нескольких слов, необходимо проверить содержит ли текст данные слова. Текст находится просто в string. Посоветуйте как можно это сделать. Пробовал различные методы, но такой чтобы искал несколько слов не нашел. Предполагаю что нужно использовать регулярки, но хотелось бы как то по другому. Заранее спасибо.
wmzvov вне форума Ответить с цитированием
Старый 16.12.2011, 23:14   #2
Lasur
Форумчанин
 
Аватар для Lasur
 
Регистрация: 13.10.2011
Сообщений: 143
По умолчанию

Почему бы не вызвать для каждого слова метод bool Contains(string) из класса String?
Все имена, фамилии, ники, даты и события упоминаемые в моих постах, являются вымышленными. Все совпадения с реально существующими - случайны.
Lasur вне форума Ответить с цитированием
Старый 17.12.2011, 11:48   #3
wmzvov
Пользователь
 
Аватар для wmzvov
 
Регистрация: 16.03.2010
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Lasur Посмотреть сообщение
Почему бы не вызвать для каждого слова метод bool Contains(string) из класса String?
Вот пока как использую, но не уверен что делаю правильно...

Код:
private bool find(string strBuff, string[] strFinde)
        {
            string[] newStr = strBuff.Split(new string[] {" "}, StringSplitOptions.None);
            int tru = 0;
            foreach (string strB in newStr)
            {
                foreach (string strF in strFinde)
                {
                    if (strB.Contains(strF))
                    {
                        tru++;
                    }
                }
            }

            if (tru >= strFinde.Length)
                return true;
            else
                return false;
        }
Все же кажется нужно делать регулярки =)

Последний раз редактировалось wmzvov; 17.12.2011 в 11:53.
wmzvov вне форума Ответить с цитированием
Старый 17.12.2011, 13:18   #4
Lasur
Форумчанин
 
Аватар для Lasur
 
Регистрация: 13.10.2011
Сообщений: 143
По умолчанию

Несколько вопросов по поводу того, что вы хотите.
1.Вам нужно проверить именно наличие таких СЛОВ в тексте, то есть если в тексте есть arcsin, то sin там может и не быть?
2.В случае положительного ответа на предыдущий ответ: а что насчет слов "blabla," или "bebe."? Если вы хотите, чтобы и такие слова считались при поиске "blabla" или "bebe", тогда да, лучший вариант - регулярки.
Все имена, фамилии, ники, даты и события упоминаемые в моих постах, являются вымышленными. Все совпадения с реально существующими - случайны.

Последний раз редактировалось Lasur; 17.12.2011 в 13:25.
Lasur вне форума Ответить с цитированием
Старый 17.12.2011, 18:40   #5
Руслантус
Наркоман самоучка
Форумчанин
 
Аватар для Руслантус
 
Регистрация: 22.07.2007
Сообщений: 276
По умолчанию

Можно попробовать пойти таким путём:

Код:
        bool Check(string str, string[] words)
        {
            foreach (var word in words)
            {
                if (str.IndexOf(word,
                    StringComparison.OrdinalIgnoreCase) == -1)
                {
                    return false;
                }
            }

            return true;
        }
#include <мозг.h>
Руслантус вне форума Ответить с цитированием
Старый 17.12.2011, 19:12   #6
wmzvov
Пользователь
 
Аватар для wmzvov
 
Регистрация: 16.03.2010
Сообщений: 12
По умолчанию

Цитата:
Несколько вопросов по поводу того, что вы хотите.
1.Вам нужно проверить именно наличие таких СЛОВ в тексте, то есть если в тексте есть arcsin, то sin там может и не быть?
2.В случае положительного ответа на предыдущий ответ: а что насчет слов "blabla," или "bebe."? Если вы хотите, чтобы и такие слова считались при поиске "blabla" или "bebe", тогда да, лучший вариант - регулярки.
Если текст "jkhslWORD1sdkfjh sdWORD2fs dfg WORD3" содержит все искомые words то тогда true. Слова должны полностью совпадать, то есть содержать подстроку.

Цитата:
Код:
bool Check(string str, string[] words)
        {
            foreach (var word in words)
            {
                if (str.IndexOf(word,
                    StringComparison.OrdinalIgnoreCase) == -1)
                {
                    return false;
                }
            }

            return true;
        }
Наверно примерно так и сделаю, только текст у меня может быть большим, как нибудь параллельно буду делать. Всем спасибо.
wmzvov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Набор слов из файла MaxRGB Общие вопросы C/C++ 0 15.03.2011 10:47
Из-за чего данный исходник не работает?(Опять проверка почты) misher Работа с сетью в Delphi 6 10.12.2010 19:24
20 000 слов и набор grafgrial Общие вопросы Delphi 9 09.08.2010 12:36
Составить в алфавитном порядке список всех слов, встречающихся в тексте, и количество этих слов. KAPAHDAW Паскаль, Turbo Pascal, PascalABC.NET 2 17.02.2009 01:19