2016-06-28 16 views
0

Ich mache ein kleines Notepad-Programm, weil ich sehr gelangweilt bin und dachte, ich würde versuchen, eine "Find" -Funktion in meinem Programm zu implementieren.Markieren Sie alle Vorkommen einer Zeichenfolge

Ich möchte jedes Wort markieren, das einer gegebenen Zeichenfolge entspricht.

hier ist das Haupt Stück Code

if(e.getSource() == m_find){ 
    String s = (String)JOptionPane.showInputDialog("Find Word", "Please search a word"); 
     if(m_area.getText().contains(s)){ 
     int start = m_area.getText().indexOf(s); 
     int length = start + s.length(); 
      try { 
       highlight.addHighlight(start, length, painter); 
      } catch (BadLocationException e1) { 
       e1.printStackTrace(); 
      } 
    } 

Dies wird nur das erste Vorkommen des Wortes, wie würde ich jedes Vorkommen des Wortes zu hoch die Lage sein.

+0

Versuchen JQ mit und hier arbeitet Post Link: http://stackoverflow.com/questions/119441/highlight-a-word-with-jquery – shiva

+0

@shiva Sie erkennen, dass dies eine ** Java ** Frage richtig ist ... – explv

+0

Auch OP nie sagte Hervorhebung hat nicht funktioniert. OP fragt, wie man den Rest der Wörter hervorhebt. –

Antwort

0

Ich bin mir sicher, dass es viele Möglichkeiten gibt, aber man wäre eine while Schleife zu verwenden, um Vorkommnisse hervorzuheben, wenn es mehr zu finden gibt. Dann würdest du den String nur noch an dem vorbei schauen, was du bereits markiert hast.

String stringToFindWordsIn = m_area.getText(); 

while(stringToFindWordsIn.contains(s)){ 
    // highlight the word 

    // Make stringToFindWordsIn the substring from where you just highlighted to the end (drop off everything before and including the word you just highlighted) 
} 
0

Sie können indexOf mit Startparameter verwenden Suche Formular angegebenen Index zu starten, Beispielimplementierung:

int start = 0; 
do { 
    start = m_area.getText().indexOf(s, start); 
    int length = start + s.length(); 
    try { 
     highlight.addHighlight(start, length, painter); 
    } catch (BadLocationException e1) { 
     e1.printStackTrace(); 
    } 
    start += length; 
} 
0

Try this:

if(e.getSource() == m_find){ 
     String s = (String)JOptionPane.showInputDialog("Find Word", "Please search a word"); 
     if(m_area.getText().contains(s)){ 
     String text = m_area.getText(); 
     int start = text.indexOf(s); 
     while (start >= 0) { 
      int length = start + s.length(); 
      try { 
       highlight.addHighlight(start, length, painter); 
      } catch (BadLocationException e1) { 
       e1.printStackTrace(); 
      } 
      start = text.indexOf(s, start + 1); 
     } 
    } 
Verwandte Themen