Java swing JTable RowFilter忽略符号

时间:2013-11-15 13:55:49

标签: java regex swing jtable rowfilter

以下是我过滤JTable的代码。 'text'是要在表格中搜索的输入文本。

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

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

2 个答案:

答案 0 :(得分:1)

创建RowFilter的自定义实现。在include方法中:

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

答案 1 :(得分:0)

我假设您将能够采用以下模式(完全符合您的标准)到您所需的模式:

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

简单输入:

+25+36
25+36*36
2536

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

工作方式:

  1. [\\Q+-*/\\E]要匹配+, -, *, /中的任何一个,?+之后会将其作为量词:X?+表示X出现一次或不出现所有。
  2. \\d+是一种匹配一个或多个数字
  3. 的模式
  4. 并让X = [\\Q+-*/\\E]?+\\d+(X):匹配X作为捕获组,(X)+表示该组至少会出现一次或多次。
  5. 查看Pattern class documentation