C #: извлечение фрагмента на основе поискового запроса в одном документе - PullRequest
0 голосов
/ 30 октября 2009

Мне доступен текст из документа PDF, и я хочу отображать фрагменты текста везде, где появляется введенная пользователем поисковая фраза. Скажем, поисковый термин «iphone», я хочу отобразить 200 символов вокруг каждого экземпляра слова iphone в документе. В идеале, фрагмент также должен начинаться с начала предложения.

Какой самый эффективный способ сделать это, используя .NET / C #?

Ответы [ 2 ]

2 голосов
/ 30 октября 2009

Вы можете сделать это с помощью регулярного выражения:

\s.{0,100}iphone.{0,100}\s

Здесь написано «соответствует символу пробела, до 100 символов, слову« iphone », до 100 символов и, наконец, символу пробела». Поиск пробелов с обоих концов гарантирует, что вы получите целые слова.

Вы бы использовали это так (обратите внимание, что вы можете Trim() пробел из совпадений):

var regex = new Regex(@"\s.{0,100}iphone.{0,100}\s",
                      RegexOptions.IgnoreCase | RegexOptions.Compiled);

for (Match m = regex.Match(inputString); m.Success; m = m.NextMatch())
    Console.WriteLine(m.Value.Trim());

Вместо сопоставления пробела и его обрезки вы можете сопоставить текст только с помощью группы.

2 голосов
/ 30 октября 2009

псевдокод:

int start = -1;
int index = str.IndexOf(search);
while (index != -1)
{
    print str.Substring(index-100, index+100);
    index = str.IndexOf(search, index);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...