Как найти начальный и конечный индекс слова на основе данного индекса в слове? - PullRequest
1 голос
/ 26 февраля 2012

Например, если был TextBox, содержащий этот текст:

The quick brown fox jumped over the lazy dog.

И мигающий курсор (текстовая вставка) текстового поля был расположен в i в quick, что было бы элегантным способом найти индекс для q и индекс для k?

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

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

Спасибо за помощь.

1 Ответ

4 голосов
/ 26 февраля 2012

Использование циклов в обоих направлениях звучит как правильный подход для меня - но вам не нужно писать циклы. Вы можете использовать String.IndexOf и String.LastIndexOf:

int nextSpace = text.IndexOf(' ', index);
int previousSpace = text.LastIndexOf(' ', index);

Это будет непросто, и вы также должны учитывать, что слова не всегда ломаются на границах пространства - но это должно по крайней мере избавить вас от петель:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...