前提・実現したいこと
Unityで電卓を作成しています。
実現したいこととして
①ユーザーが入力した式が見える(Stringでテキストに表示しています)
②入力を間違えたときバックスペースで修正できる
③=を押すと結果が表示される。
①②に関しては実現できたのですが、計算で困っています。
②で守勢される可能性があるため=を押すときに文字列を処理したいのですが、
String型の計算式を動的に計算する方法を教えてください。
試したこと
以下のようなコードを書き1+1などの簡単な式は出力できました。
c#
1 List<string> _numberList; 2 string _numberField;//キーで入力されている数式 3 string _result;//計算結果 4 5public void calculation(){ 6 _result = _numberField; 7 string[] words = _result.Split('+'); 8 //1+1を+で分割、リストに入れる 9 foreach (var word in words) 10 { 11 _numberList.Add(word); 12 } 13 float _num = _numberList[0] + _numberList[1]; 14 Debug.Log(_num); 15}
=を押したときcalculation(){}を呼び出すのですが、
入力したString型のデータを.Split()を用いて演算子で分割し、リストに入れることはできました。
四則演算を行いたいのですが、加算だけであればリストの項目を取得しif文などですべての要素を加算することで可能ですが、ほかの割り算や掛け算、引き算がからんだ時難しくなりました。
String x ="(1+1-1)×2"
のような文字式を
float _num = (1+1-1)*2;
のように変換する方法を教えてください。
補足情報
Unity2019.3.9f1
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。