Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Поиск в HTML


Автор: Vit 10.6.2007, 16:54
Как сделать текстовый поиск в HTML файле? 

Другими словами если в тексте написано:

<b>S</b>earc<i>h</i>

То слово "Search"  должно находиться.

Автор: iddqd 10.6.2007, 17:02
Регулярные выражения. Ничего лучше еще не придумали.
Хотя тут наверно проще будет браузером открыть страницу и искать в уже пропарсеной.

Автор: stab 10.6.2007, 17:32
в одном из проектов эту проблему решил так: считать в строку, удалить из строки всё что заключено между парами угловых скобок, т.е. после первой итерации цикла удаления получим "S</b>earc<i>h</i>", ну а после уже собственно поиск. это при условии что поиск в значениях атрибутов не нужен.

Автор: Exception 10.6.2007, 20:16
А тебе нужно только количество вхождений посчитать или ещё какие данные?

Добавлено через 13 минут и 32 секунды
Код
public string Decode (string input)
{
    bool skip = false;
    StringBuilder sb = new StringBuilder (input.Length);
    foreach (char c in input)
    {
        if ((c == '<') || (c == '>')) skip = !skip;
        if (!skip) sb.Append (c);
    }
    return sb.ToString ();
}

С возвращённой строкой делай что хочешь smile .

Автор: tol05 10.6.2007, 20:49
Да нет, ну зачем все эти циклы?  Регулярные выражения действительно лучше ИМХО.
Код

string s = "<div>S</div>earc<i>h</i>";
Regex r = new Regex(@"<[^>]+>|</[^>]+>");
string[] str = r.Split(s);
StringBuilder sb = new StringBuilder();
foreach (string s1 in str)
{
  sb.Append(s1);
}

iddqd, рулит smile

Автор: Exception 10.6.2007, 21:08
Оба способа хороши.

Автор: Vit 11.6.2007, 00:49
Критична скорость...

Автор: v2v 16.6.2007, 21:16
А сам  подумай как можно быстрее сделать? Помоему никак.
Хотя код Exceptionа будет работать немного быстрее.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)