Moin Moin!
Ich habe zwei Probleme mit reguläre Ausdrücken.
1)
Ich möchte die Anzeige meiner Tabelle anhand eines Namens in einem Feld filtern. Der Inhalt des Feldes schaut z.B. so aus "Müller P, Stolz KW, Nolte K, Schmidt HG, Mayer F".
Ich möchte das Einträge auch gefunden werden wenn der Name noch nicht vollständig geschrieben wurde (aber beim Anfang des Namens muss begonnen werden) und es soll möglich sein nach mehreren Namen gleichzeitig (am besten mit einer und / oder Möglichkeit, z.B. durch Eingabe von "|" oder "+") zu Suchen.
Der zu suchende Namen wird in ein JTextField eingegeben. Das obere Beispiel soll z.B. gefunden werden bei der Eingabe von "S", "Sto", "Stolz KW" oder "KW". Aktuell verwende ich den folgenden Code:
2)
Bei meinem zweiten Problem möchte ich gerne Teile eines Textes, der in einem JEditorPane angezeigt wird, rot hervorheben, wenn diese in einem JTextField eingetragen wurden. Doch auch dies funktioniert leider nicht so wie ich es versuche. Derzeit schaut der Code so aus:
Würde mich sehr über Hilfe und Tipps freuen!!
Ich habe zwei Probleme mit reguläre Ausdrücken.
1)
Ich möchte die Anzeige meiner Tabelle anhand eines Namens in einem Feld filtern. Der Inhalt des Feldes schaut z.B. so aus "Müller P, Stolz KW, Nolte K, Schmidt HG, Mayer F".
Ich möchte das Einträge auch gefunden werden wenn der Name noch nicht vollständig geschrieben wurde (aber beim Anfang des Namens muss begonnen werden) und es soll möglich sein nach mehreren Namen gleichzeitig (am besten mit einer und / oder Möglichkeit, z.B. durch Eingabe von "|" oder "+") zu Suchen.
Der zu suchende Namen wird in ein JTextField eingegeben. Das obere Beispiel soll z.B. gefunden werden bei der Eingabe von "S", "Sto", "Stolz KW" oder "KW". Aktuell verwende ich den folgenden Code:
Java:
RowFilter<MyTableModel, Integer> authorFilter = new RowFilter<MyTableModel, Integer>() {
public boolean include(Entry<? extends MyTableModel, ? extends Integer> entry) {
MyTableModel tableModel = entry.getModel();
Paper paper = tableModel.getPaper(entry.getIdentifier());
String regex = "(?i)[\\w]*(" + model.getFilter(FILTER_AUTHOR) + ")[\\w]*";
System.out.println(paper.getAuthorList() + " => " + regex);
if (paper.getAuthorList().matches(regex)) {
return true;
}
return false;
}
};
2)
Bei meinem zweiten Problem möchte ich gerne Teile eines Textes, der in einem JEditorPane angezeigt wird, rot hervorheben, wenn diese in einem JTextField eingetragen wurden. Doch auch dies funktioniert leider nicht so wie ich es versuche. Derzeit schaut der Code so aus:
Java:
String str = tableModel.getPaper(rowIndex).getText();
String filter = model.getFilter(FILTER_ABSTRACT);
if(filter.length() > 0) {
System.out.println("filter -> " + filter);
str.replaceAll("(" + filter + ")", "<span style=\"color: #FF0000;\">" + filter + "</span>");
}
String text = "<p style=\"margin: 0px 0px 5px 0px; text-align: justify;\">" + str + "</p>";
Würde mich sehr über Hilfe und Tipps freuen!!