在textarea中搜索单词

时间:2011-05-06 09:28:51

标签: java full-text-search

我正在java中构建自定义find and replace。我浏览文本文件并在textarea中加载内容。现在我有一个textBox,我输入了一个需要搜索的文本。

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

5 个答案:

答案 0 :(得分:4)

首先阅读Text and New Lines,了解有关如何搜索文本的信息。

然后要突出显示您需要使用荧光笔的文字。代码类似于:

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

答案 1 :(得分:0)

indexOf是最简单的方法,但可能不是最快的方法。

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

答案 2 :(得分:0)

我的文本编辑器遇到了同样的问题。我没有使用荧光笔,我用了

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

scene = new Scene(root, 640, 480);