Найти строку в тексте, но я также хочу текст до и после события

Вопрос:

Вот что я ищу:

У меня есть значение «ключевое слово»… позволяет сказать «лиса». У меня есть «сообщение», такое как «Быстрая коричневая лиса прыгает по ленивой собаке». В идеале мое возвращение было бы +X или -X персонажами с обеих сторон появления, например: «… быстрый коричневый лис прыгает через…» (после этого я добавлю многоточие).

Каков хороший, эффективный подход к этой проблеме? Я обеспокоен тем, что ключевые слова могут встречаться в начале сообщения, а также не хотят, чтобы он много раз винял в каждой из этих оценок сообщений. Я также не против, если слова отрезаны.

Пара вещей, которые приходят на ум при работе с этим, заключается в том, что я могу использовать какой-то string.contains в сочетании с string.substring.. и т.д. Это далеко?

Лучший ответ:

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

 ".{0,"+X+"}"+Regex.Escape(keyword)+".{0,"+X+"}"

Итак, если ключевое слово — это fox а X равно 5, ваше регулярное выражение будет

 .{0,5}fox.{0,5}

Это регулярное выражение будет соответствовать от 0 до 5 символов в right и left части fox.


Ваш код

 String output=Regex.Match(input,regex).Value;

Ответ №1

Вы можете использовать метод String.IndexOf для поиска местоположения find, затем рассчитать некоторые смещения на основе возвращаемого значения и длины строки, а затем вы можете получить ключевое слово + / — X с помощью метода Substring.

Оцените статью
TechArks.Ru
Добавить комментарий