как получить позицию конкретной строки в редакторе, который в данный момент открыт? - PullRequest
2 голосов
/ 27 февраля 2012

Я делаю проект, используя плагин eclipse для создания IDE.

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

Кто-нибудь может мне помочь в этом?

Ответы [ 2 ]

3 голосов
/ 27 февраля 2012

Вместо того, чтобы сделать это самостоятельно, не будет ли проще использовать String.replaceFirst() или String.replaceAll() для замены?

Все, что вам нужно сделать, это «получить» текущий текст String из целевого редактора, выполнить замену и затем «установить» полученный String обратно в целевой редактор.

Я не знаком с Eclipse, но большинство текстовых полей, вероятно, реализуют абстрактный класс, такой как JTextComponent, который имеет удобные методы для getText() и setText().

2 голосов
/ 27 февраля 2012

Если у вас есть ссылка на редактор, и если это ITextEditor, вы можете использовать

 IDocumentProvider provider = editor.getDocumentProvider();
 IDocument doc = provider.getDocument(editor.getEditorInput());
 String content = doc.get();

Теперь у вас есть содержимое, и вы можете найти положение некоторого кода в этой строке.

Если у вас есть смещение для замены текста и длина для замены, вы можете позвонить

 doc.replace(offset,length,newText);

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

Adreamus

/ edit: я не могу оставить комментарий, хотя я опубликую его здесь: Другой ответ от Пола Вебстера использует устаревшую функцию «поиск». Вместо этого рекомендуется использовать FindReplaceDocumentAdapter . Метод 'find' возвращает IRegion, который содержит смещение и длину в документе, связанном с этим адаптером.

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