我正在java中构建自定义find and replace
。我浏览文本文件并在textarea中加载内容。现在我有一个textBox,我输入了一个需要搜索的文本。
搜索文本的最佳方式是什么。我知道使用string.indexOf()
的方式,但我也需要突出显示。所以请帮帮我。
答案 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);