2017-02-20 43 views
0

我正在開發一個Java應用程序。其中一個模塊需要一個搜索過濾器作爲輸入。搜索過濾器將具有名稱,值參數。該計劃應該能夠探測和分析以下模式:Java應用程序搜索篩選器解析

1. ((Name='Shaina')&(ID='26')) 

2. (Name='Shaina') 

我需要能夠解析過濾器來獲取鍵值對,如: 名稱=「Shaina」 ID = '26'

我會使用這些名稱 - 值對進行某些數據庫查詢和相關處理。 我已經開始使用java正則表達式,但它看起來很複雜,因爲參數的數量是動態的。

能否請您提出一個有效的方法或指向正確的方向來實現這一目標?

謝謝
腰帶

+0

你想通過名稱來篩選表達?我沒有undestand。 – bpedroso

+0

@bpedroso我編輯了這個問題。謝謝。 –

+0

您是否還需要檢測邏輯運算符或只是鍵=值部分? – zerologiko

回答

0

對於您的使用案例,我會建議移除大括號和',分開'&'並解析鍵值對。

示例代碼

str = str.replaceAll("[()']", ""); 
String[] elements = str.split("&"); 
for (String elem : elements) { 
    String[] pair = elem.split("="); 
    String key = pair[0]; 
    String value = pair[1]; 
}