Java 在文本区域中搜索单词

Java 在文本区域中搜索单词,java,full-text-search,Java,Full Text Search,我正在用java构建一个自定义的afind and replace。我浏览一个文本文件并将内容加载到文本区域。现在我有了一个文本框,在这里输入需要搜索的文本 搜索文本的最佳方式是什么。我知道一种使用string.indexOf()的方法,但我也需要突出显示。所以请帮帮我。indexOf是最简单的方法,但可能不是最快的方法 为什么indexOf不为你工作?您将获得匹配的索引,并且您知道匹配的长度,因此只需突出显示匹配的文本。首先阅读有关如何获取要搜索的文本的信息 然后,要突出显示找到的文本,需要使

我正在用java构建一个自定义的a
find and replace
。我浏览一个文本文件并将内容加载到文本区域。现在我有了一个文本框,在这里输入需要搜索的文本


搜索文本的最佳方式是什么。我知道一种使用
string.indexOf()
的方法,但我也需要突出显示。所以请帮帮我。indexOf是最简单的方法,但可能不是最快的方法

为什么indexOf不为你工作?您将获得匹配的索引,并且您知道匹配的长度,因此只需突出显示匹配的文本。

首先阅读有关如何获取要搜索的文本的信息

然后,要突出显示找到的文本,需要使用荧光笔。代码类似于:

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); }
}

我的文本编辑器也有同样的问题。但我没有用荧光灯,我用的是

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));

Camicker,如何删除以前的高亮显示请提供一些解决方案的说明。不仅仅是代码。
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);
}
if (e.getSource() == btnSearch && !searchWord.getText().isEmpty()) {

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

    templateArea.getHighlighter().removeAllHighlights();

    int offset = templateArea.getText().indexOf(searchWord.getText());
    int length = searchWord.getText().length(); 

    while ( offset != -1)
    {
        try
        {
             templateArea.getHighlighter().addHighlight(offset, offset + length, painter);
             offset = templateArea.getText().indexOf(searchWord.getText(), offset+1);
        }
        catch(BadLocationException exception) { System.out.println(exception); }
        }
     }
}