Поиск слов в текстовой области - PullRequest
2 голосов
/ 06 мая 2011

Я создаю пользовательский find and replace в Java.Я просматриваю текстовый файл и загружаю содержимое в текстовое поле.Теперь у меня есть текстовое поле, в которое я ввожу текст, который нужно найти.

Как лучше всего искать текст.Я знаю способ использования string.indexOf(), но мне также нужно выделить.Поэтому, пожалуйста, помогите мне.

Ответы [ 4 ]

4 голосов
/ 06 мая 2011

Прежде всего прочитайте Текст и новые строки для получения информации о том, как получить текст для поиска.

Затем, чтобы выделить текст, который вы нашли, вам нужно использовать маркер. Код выглядит примерно так:

Highlighter.HighlightPainter painter = 
    new DefaultHighlighter.DefaultHighlightPainter( Color.cyan );

int offset = text.indexOf(searchWord);
int length = searchWord.length();

while ( offset != -1)
{
    try
    {
        textPane.getHighlighter().addHighlight(offset, offset + length, painter);
        offset = text.indexOf(searchWord, offset+1);
    }
    catch(BadLocationException ble) { System.out.println(ble); }
}
0 голосов
/ 26 июня 2015
final String inputValue = JOptionPane.showInputDialog("Find What?");
final int l1 = jTextArea1.getText().indexOf(inputValue);
final int l2 = inputValue.length();

if (l1 == -1) {
    JOptionPane.showMessageDialog(null, "Search Value Not Found");
} else {
    jTextArea1.select(l1, l2+l1);
}
0 голосов
/ 06 августа 2013

У меня такая же проблема с моим текстовым редактором. Я не использовал подсветку, я использовал

textArea.select(int i1, int i2); //where i1 is where your selection begins and i2 is where it ends.

также простой способ найти и заменить:

textArea.setText(textArea.getText().replaceAll(String string1, String string2));
0 голосов
/ 06 мая 2011

indexOf - самый простой способ, но, возможно, не самый быстрый.

Почему indexOf не работает для вас? Вы получите индекс совпадения и знаете длину совпадения, поэтому просто выделите соответствующий текст.

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