1
와일드 카드 검색을 사용하여 단어를 찾고 해당 단어를 모두 강조 표시하는 단어 검색 엔진을 만들고자합니다. 검색을 진행할 수 있지만 하이 라이터는 찾은 첫 단어 만 강조 표시합니다. '* hat'을 검색한다고하면 '그'의 모든 인스턴스가 강조 표시되지만 '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){}
}
}
하는 문자열이 모두 내가 그들을 인쇄 한 하이 라이터로 전달되고 있는지 확인하려면 다음은
는 하이 라이터 내 코드, 패턴 매처에 의해 반환되는 문자열이 메서드에 전달되는 것입니다 방법.
시작 색인이 현재 반복 횟수를 초과 할 경우이 단어는 반복해서 강조 표시됩니다. 그것이 문제가 될지 고려하십시오. 나는 for-loop를'text.indexOf()'가'-1'을 반환하지 않는다는 조건에서 while-loop로 바꿀 것을 제안합니다. – initramfs