使用Regex过滤FilteredList?

时间:2014-05-23 07:31:38

标签: java regex javafx

我有一个TextField,允许用户从Singleton数据库中搜索Employee。每个员工都有名字和姓氏。

searchBar.textProperty().addListener(
            (observable, oldValue, newValue) -> {
               filteredList.setPredicate(arg0 -> {
                  String nameString = arg0.getFirst() + arg0.getLast();
                  nameString = nameString.toUpperCase();
                  if (arg0.getFirst().toLowerCase()
                        .contains(newValue.toLowerCase())
                        || arg0.getLast().toLowerCase()
                              .contains(newValue.toLowerCase()))
                     return true;
                  return false;
               });
            });

如果我有一个名为“John Smith”的人,如果我搜索以下内容,过滤器将正常工作: “约翰” “约翰” “史密斯” “史密斯” 但不是 “约翰·史密斯” “史密斯约翰” “史密斯,约翰” 如何正确使用我的搜索查询与正则表达式找到员工?例如,对5个单词的查询有15个子字符串,我们可以尝试对其进行测试。

JACOB Ĵ 一个 C Ø 乙 JA AC CO OB JAC COB JACO ACOB

以这种方式搜索所有可能的匹配将是太昂贵了。最有效的方法是什么?我希望能够找到John Smith与“Johnsmith”或“Smithjo”或类似的东西。

1 个答案:

答案 0 :(得分:0)

你的正则表达式可能就像"。(?:John | Smith)。" 我会搜索任何包含" John"或者#34;史密斯"。 这是你想要的吗? 尼科