2011-12-26 68 views
-1

有人可以幫我解析一個java字符串中的整數值和運算符運算符。如何從字符串中解析某些標記?

對於前:

String rule = "itemCount < 10 and itemCount >= 20"; 

從規則的字符串我需要檢索,<, 10, >= and 20然後將顯示在JSP。

+0

怎麼樣 '和' 運營商?這些規則是否可以有其他操作員總是有兩個比較? – Groo 2011-12-26 15:22:46

+0

嗨,Groo,我不感興趣得到「和」。我只需要< , 10, > =,20 – Hemanth 2011-12-26 15:25:35

+0

爲什麼以及在哪裏需要這樣一個概念來實現? – Lion 2011-12-26 15:27:46

回答

1
for (int i =0; i < rule.length; ++i) { 
    if (rule[i] == "<") { 
     // Code for retrieving < 
    } else if (rule[i] == ">=") 
     // Code for retrieving >= 
    } else { 
     tryParse(rule, i); 
    } 
} 

的TryParse是將遞歸地嘗試解析整數直到連續數字最大的序列中發現和更新的

+0

您正嘗試在'char'上調用'equals()'。這是行不通的。 – 2011-12-26 15:49:50

+0

我只是提出一個邏輯,如果他們不工作,你可以適應這些方法 – 2011-12-26 15:59:37

+0

現在快樂與此編輯? – 2011-12-26 16:00:24

1

值的函數做一個正則表達式的幫助嗎? 也許是這樣的:

(\w+) (<|<=|==|>|>=) (\w+) (\w+) (\w+) (<|<=|==|>|>=) (\w+) 

(可以肯定地優化)

在匹配時對您的字符串這個表達式,你應該得到7組,內容如下:

1:ITEMCOUNT

2:<

3:10

4:和

5:ITEMCOUNT

6:> =

7:20

參見Pattern Class documentation的更多細節。

但總的來說,我不確定這是你想要做的。

也許它更好地切換到更抽象的方式來定義您的表達,而不是寫入一個字符串。

什麼是這樣的:

Rule rule = Rule.AND(
    Rule.SMALLER(itemCount, 10), 
    Rule.GREATER_OR_EQUAL(itemCount, 20) 
); 
boolean result = rule.getResult(); 
+0

謝謝Micha。您能否讓我知道,在哪個包規則類可用? – Hemanth 2011-12-26 16:42:29