То, что я пытаюсь сделать, это получить сегмент большой строки. Я пробовал использовать indexOf(), но это не удается полностью, когда речь заходит о повторном тексте. Моя конечная цель заключается в том, чтобы пользователь мог выбирать текст в JTextPane и стилизовать только ту часть текста. Я уже получил стиль для работы со StyledDocuments, и я даже получил его, чтобы стилизовать только текст, который пользователь выбирает, но вот моя проблема.Как я могу получить строку строки из большого блока строки?
Допустим, что
Строка alltext = «быстрая коричневая лиса перепрыгнула через ленивую собаку»;
А какие моменты пользователь является String selectedtext
В этом случае, давайте просто скажем,
Строка selectedtext = "коричневый";
Моя цель - получить смещение и длину выделенного текста. Для этого конкретного предложения я могу просто сделать:
int offset = alltext.indexOf(selectedtext);
int length = selectedtext.length();
И это будет нормально работать. Но что, если:
alltext = brownbrownbrownbrownbrown;
И пользователь выделяет третий коричневый цвет. Если я сделаю то же, что и раньше, программа просто выберет первый коричневый вместо реального, и он будет стилизовать первый.
Есть ли способ обойти это или нет, чтобы получить положение сегмента строки из большого блока?
Спасибо!
Есть несколько вопросов, о которых я думаю, что два ответа в связанных (под значком Careers 2.0) – mKorbel
Почему вы отслеживаете выбор как строку, а не напрямую как индекс/смещение, как это обычно делается? JTextPane должен делать это автоматически. Или, если сказать по-другому: если по какой-то причине вы можете определить только ту строку, которую пользователь ищет, нет способа узнать, какой она есть. – millimoose
Как именно вы получаете значение индекса из JTextPane? Есть ли способ, который делает это для вас? – applemavs