2011-12-26 6 views
-1

誰かが私に整数値とarithematic演算子をJava文字列から解析させてください。 EXのために文字列から特定のトークンを解析する方法は?

:その後、JSPに表示されます私が取得する必要がルール文字列、<, 10, >= and 20から

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

+0

何?これらのルールに追加の演算子を使用できますか?常に2つの比較がありますか? – Groo

+0

こんにちは、私は "and"を得ることに興味がありません。私はただ必要です< , 10, > =、20 – Hemanth

+0

なぜ、正確に実装するためにそのような概念が必要でしたか? – Lion

答えて

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()'を呼び出そうとしています。それは動作しません。 –

+0

私は論理を提示しているだけで、動作しない場合にはメソッドを適応させることができます –

+0

この編集は今、うれしいですか? –

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

関連する問題