1

最近同様の質問をしましたが、もう少し助けが必要です。

ユーザーは次のような文字列を入力できます。

"-5-1/-2"

+、-、*、/、(、)で区切る必要があり、負の数は一緒に保つ必要があります。この場合、-5と-2は一緒に保つ必要があります。

これは私が現在持っているものです:

String userStrWithoutSpaces=userStr.replaceAll(" ", "");
String[] tokens = userStrWithoutSpaces.split("(?<=[\\-+*/=()])|(?=[()\\-+*/=])");

これは、負の数を一緒に保つ以外に機能します。

前もって感謝します。

4

3 に答える 3

2

これを試して:

String[] tokens = userStrWithoutSpaces.split(
    "(?<=[+*/=()])|((?<=-)(?!\\d))|(?=[()\\-+*/=])");

これは、ハイフンの後に数字が続く場合に分割されないように先読みを使用します

于 2013-01-07T23:49:17.177 に答える
1

JFlexを使用します。字句解析器、つまりコードの一部が必要です。これにより、入力テキストからトークンが得られます。JFlexは、字句解析プログラムのジェネレーターです。非常に高速で信頼性の高いアナライザー。正規表現に似た形式で、非常に便利なルールのみを指定します。すべての低レベルの仕事はJFlexを行います。写真はJFlexのアイデアを示しています。

ここに画像の説明を入力してください

于 2013-01-07T23:48:07.397 に答える
0

Javaで算術式の結果を取得します。

文字列として指定された数式を解析して数値を返す方法は?

それをJavaの数と演算子のコンポーネントに解析します。

単純な数式を正規表現で分割する

于 2013-01-07T23:48:34.363 に答える