2013-11-15 31 views
1

这是我的代码,用于过滤JTable'text'是在表格中搜索的输入文本。Java swing JTable RowFilter忽略符号

getSorter().setRowFilter(RowFilter.regexFilter("(?i)" + Pattern.quote(text))); 

这里的过滤不区分大小写。如何在过滤期间忽略某些符号如- () +,例如+ 88-11 & 8811应该在过滤期间匹配。

回答

1

创建一个RowFilter的自定义实现。在包含方法中:

  • 调用您的字符串上的replaceAll()方法以删除要排除的特殊字符。
  • 然后搜索匹配您的搜索模式。
  • 根据是否匹配返回true/false。
0

我假设你将能够通过以下方式(完全满足您的条件)为您所需的模式:

String pattern = "([\\Q+-*/\\E]?+\\d+)+" 

简单的输入:

+25+36 
25+36*36 
2536 

和其他类似的,这将导致一场比赛。

它的工作方式:

  1. [\\Q+-*/\\E]是匹配和+, -, *, /任何一个?+放在事后作为量词:一个X?+意味着X出现一次或根本没有。
  2. \\d+是匹配一个或多个数字
  3. 并让X = [\\Q+-*/\\E]?+\\d+(X)一个模式:匹配X作为捕捉基和(X)+指该基团会出现至少一次以上。

查看Pattern class documentation