'java.util.regex.PatternSyntaxException while using RowFilter in java swing
filterField.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
String query = filterField.getText().trim();
TableRowSorter<DefaultTableModel> sorter = new TableRowSorter<DefaultTableModel>(model);
if (query.length() == 0) {
sorter.setRowFilter(null);
} else {
table.setRowSorter(sorter);
ArrayList<RowFilter<Object, Object>> filters = new ArrayList<RowFilter<Object, Object>>(5);
filters.add(RowFilter.regexFilter("(?i)" + query, 0));
filters.add(RowFilter.regexFilter("(?i)" + query, 1));
sorter.setRowFilter(RowFilter.orFilter(filters));
}
}
});
There is a column which contains + and - signs which I want to filter but I am getting this error while filtering row
[filter.java.util.regex.PatternSyntaxException: Dangling meta character '+' near index 4 (?i)+ ]
Solution 1:[1]
public void keyReleased(KeyEvent e) {
String query = filterField.getText().trim();
TableRowSorter<DefaultTableModel> sorter = new TableRowSorter<DefaultTableModel>(model);
String rquery = null;
if (query.length() == 0) {
sorter.setRowFilter(null);
} else {
table.setRowSorter(sorter);
if (query.contains("+")) {
int idx = query.indexOf("+");
rquery = new StringBuilder(query).insert(idx, "\\").toString();
query = rquery;
}
ArrayList<RowFilter<Object, Object>> filters = new ArrayList<RowFilter<Object, Object>>(1);
filters.add(RowFilter.regexFilter("(?i)" + query, 0));
filters.add(RowFilter.regexFilter("(?i)" + query, 1));
sorter.setRowFilter(RowFilter.orFilter(filters));
}
}
});
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | APURVA DHOK |
