2014-05-23 91 views
0

我有一個TextField,允許用戶從Singleton數據庫中搜索Employee。每個員工都有名字和姓氏。使用正則表達式過濾FilteredList?

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; 
       }); 
      }); 

如果我有一個名爲「約翰·史密斯」的人,該過濾器將正常工作,如果我搜索: 「約翰」 「約翰」 「史密斯」 「史密斯」 但不是 「約翰Smith「 」Smith John「 」Smith,John「 如何正確使用我的搜索查詢和正則表達式來查找Employee?例如,查詢5個單詞,我們可以嘗試測試15個子字符串。

JACOB Ĵ 甲 Ç ö 乙 JA AC CO OB JAC COB JACO ACOB

這將是尋找這樣每一個可能的匹配遠太昂貴。什麼是最有效的方法呢?我希望能夠以「Johnsmith」或「Smithjo」或類似的東西找到John Smith。

回答

0

你的正則表達式可以像「。(?:約翰|史密斯)。」 我會爲它包含單詞‘約翰’或單詞‘Smith’的任何句子搜索。 是你想要的嗎? Nikola