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