【发布时间】:2014-12-15 05:24:37
【问题描述】:
我正在尝试制作一个单词搜索引擎,它可以通过通配符搜索来查找单词,并突出显示它找到的所有单词。我已经开始搜索,但荧光笔只会突出显示它找到的第一个单词。假设我搜索 '*hat','that' 的所有实例都被突出显示,但它没有突出显示任何其他单词,例如 'what'(即使它们按找到的方式返回到控制台)。
这是我的荧光笔代码,模式匹配器返回的字符串被传递给这个方法:
public static void highlighter(String s){
String text = displayString.getText();
highlightStr = new DefaultHighlighter();
painter = new DefaultHighlighter.DefaultHighlightPainter(Color.pink);
displayString.setHighlighter(highlightStr);
//highlightStr.removeAllHighlights();
for(int index = 0; index < text.length(); index++){
int start = text.indexOf(s, index);
try{
int end = start + s.length();
highlightStr.addHighlight(start, end, painter);
displayString.setCaretPosition(end);
}catch(BadLocationException e){}
}
}
为了确保字符串都被传递给荧光笔,我已经从方法中打印了它们。
【问题讨论】:
-
如果它们的起始索引超出当前迭代的索引,这个东西会一遍又一遍地重复突出显示相同的单词。考虑这是否会成为问题。我建议在
text.indexOf()不返回-1的条件下将 for 循环更改为 while 循环。