2012-05-11 24 views
2

ユーザー入力を修正するコードを書く必要があります。入力は、中置形式の数式です。 私の計算が正しいためには、オペレータから離れた各オペランドが必要です。文字列の1文字または2文字ごとにスペースを挿入してください。

次のような結果が得られる方法をお教えください。

期待入力:13 * 21-5 + 33 予想される出力:13 * 21から5 + 33

研究私が行っている:私は、文字列内の各文字の間にスペースを追加する方法を見つけることができると2桁の値を持つ式の計算には使用できません。すなわち:1 3 * 2 1から5 + 3つの3. How to insert Space after every Character of an existing String in Java?

おかげ

+0

私はこの使用して単純な文字列処理機構を行いますが、それでもコードの少なくとも5〜7行に私を必要とすることができます。誰かが1行を投稿するとうれしいです。REGULAR EXPRESSION解 – AurA

答えて

1

このソリューションでは、各演算子の周りに空白を正規化します。

return expr.replaceAll("(?<=\\d)\\s*([-+/*])\\s*(?=\\d)", " $1 "); 
+0

私はjava.lang.IndexOutOfBoundsExceptionを取得します。これらの行を使用している場合、グループ1はありません。 – Singh

+0

申し訳ありませんが、括弧を忘れました。編集を参照してください。または、$ 0を使用し、括弧を使用しないでください。 –

+0

ありがとうございます! 私が達成しようとしていた元々の機能は、ユーザーがそれを忘れた場合にスペースを入れることでした。ユーザーがスペースを入れるかどうかを確認する最も良い方法は何ですか?ユーザーがそれらを追加するのを忘れた場合は、スペースを追加するだけです。 – Singh

1

正規表現を使用して数字を探し、その後、それらをスペースで囲む:

string.replaceAll("\\d+", " $0 ").trim(); // trim in case numbers are first/last 
+0

ちょうど数字のための受け入れられた答えよりもエレガント! – bobbel

関連する問題