Wort zwischen <wort> ausgeben

  • Themenstarter Themenstarter Mikrowelle
  • Beginndatum Beginndatum
M

Mikrowelle

Hallo

Ich möchte in einer jTextArea auf eine Stelle doppelt klicken, damit in eine String Variable dann alles rein kommt was zischen < und > steht.

Beispiel
<Wort> doppelklick führt zu
Code:
String a = "Wort"
// Das ist soweit kein Problem
Problem:
<W^^ort> hier weis ich nicht weiter da beim doppelklicken nicht automatisch alles zwischen <> markiert wird. Ich muss also etwas basteln was nach <> sucht und automatisch alles dazwischen ausgibt.

Momentan kann ich das nicht umsetzen weil mir die Idee fehlt. Wie setze ich das um ?

Danke
Samy
 
Doppelklick Event abfangen darin:
1. von aktueller Cursor-Position nach links bis "<" oder Anfang, Position merken
2. von aktueller Cursor-Position nach rechts bis ">" oder Ende, Position merken
3. Zeichen zwischen den Positionen als Wert deiner Variablen setzen.

noch Fragen? Dann her damit ;)

RoCMe
 
Hier jetzt mal vereinfacht an einem String:

Java:
String s = "<GanzTollesWortZwischenSpitzenKlammern>";

System.out.println(s.substring(s.indexOf('<') + 1, s.indexOf('>')));

Für indexOf() gibt es übrigens noch eine überladene Variante, in der du den offset angeben kannst, also ab welchem Zeichen im String du suchen möchtest. Den dann als 2. Parameter angeben.
 
Du kannst dir mit getCaretPosition() in der TextArea angeben lassen wo dein Cursor gerade ist und von da guckst du dann nach links bis du den char '<' gefunden hast und nach rechts bist du den char '>' gefunden hast, merkst dir die Positionen und lässt dir mit s.substring(...) den Substring aus dem Text deiner Textarea ausgeben.
 
Ach, nu verstehe ich das Problem erstmal... Lesen will gelernt sein. :)

Das 'nach links gucken' könnte man z.B. so lösen:

1. substring vom Anfang bis zur CaretPosition
2. davon den lastIndexOf('<') wählen

und schon hat man den gewollten Index. Das nach rechts suchen sollte dann allerdings so wie ich oben geschrieben hatte funktionieren.
 
Wenn ich in einer jTextArea viele Zeilen habe, und nach dem <Wort> soll in der Zeile gesucht werden wo der curser ist. Undzwar nur in der Zeile. Da muss ich woll die Zeile mir erstmal als String holen. Wie geht das ?
 
Geht das überhaupt ? Eine Zeile aus vielen, als String ausgeben? Mit hilfe von getCaretPosition?

Ich habe es jetzt

try {

int a = jTextArea1.getLineOfOffset(jTextArea1.getCaretPosition());
String line = jTextArea1.getText(jTextArea1.getLineStartOffset(a), jTextArea1.getLineEndOffset(a) - jTextArea1.getLineStartOffset(a) - 1);
System.out.println(line.substring(line.indexOf('<') + 1, line.indexOf('>')));


} catch (BadLocationException ex) {
Logger.getLogger(NickSelectionView.class.getName()).log(Level.SEVERE, null, ex);
} catch (StringIndexOutOfBoundsException ex2){
System.out.println("keine <> gefunden");
}
 
Zuletzt bearbeitet von einem Moderator:
Zurück