Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> поиск в тексте и подсветка в найденном 
V
    Опции темы
NordliNg
  Дата 5.6.2011, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 28.8.2010

Репутация: нет
Всего: нет



Имеется самописный форум на ASP.NET, хочу прикрутить поиск по сообщениям, но нужно, чтобы в отображенных результатах слова поиска подсвечивались, скажем, желтым цветом.
Поиск нужных слов в тексте реализовал так:
список сущностей приходит от Linq2Sql
Код C#
Код

List<Post> posts = new List<Post>(PostBLL.Instance.GetAllCommonPosts());
List<Post> newList = new List<Post>(posts);
                    
foreach (var post in posts)
{
    int rezcount = 0;
    string[] mass = post.Content.Split(' ', '.', ',', '-','+','`','@','#','$', '=','(',')',
                                                  '&','^','%','*','!','?','>','<','\\','/','_',':','"',';','|');
    foreach (var s in mass)
    {
        foreach (var itemsearch in searchmass)
        {
            if (s.Equals(itemsearch, StringComparison.CurrentCultureIgnoreCase))
            {
               rezcount++;
               break;
            }
        }                            
    }
    if (rezcount == 0)
    {
        if (newList.Contains(post))
       {
           newList.Remove(post);
       } 
    }
}


 

В итоге у меня формируется список с нужными сущностями, у которых в свойстве Content будет присутствовать хотя бы 1 из нужных слов. Работает нормально, но, скорее всего, при большом кол-ве записей в таблице перебор всех записей займет значительное время, а может и нет, пока это не важно. А так же будут проблемы с поиском слов, содержащих вышеперечисленные знаки, по которым происходит сплит.

После этого с помощью другого метода или во время этих операций по поиску нужно позасвечивать в контенте слова поиска, добавив перед словом и после него тэги:
Код C#

Код

string replaceTagsStart = "<a style=\"background-color: Yellow\">";
string replaceTagsEnd = "</a>"; 


Простым .Replace(oldstring, newstring) не получится, т.к. слово может оканчиваться на любой из знаков сплитования, а Replace ищет только строки с полным совпадением. Список сущностей биндится в гридвью на странице.
Подскажите, как можно решить эту проблему с подсветкой? 
PM MAIL   Вверх
ReFleX
Дата 8.6.2011, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 499
Регистрация: 26.9.2004
Где: Таллинн

Репутация: нет
Всего: 3



делается это через Regex
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0578 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.