私の使っている計算機アプリは括弧を自動的に便利な形でつけてくれます。
アプリの括弧ボタンは'()'のように開き括弧と閉じ括弧が一緒になった
アイコンを使用していますので、開き括弧と閉じ括弧のどちらを付けるかは、
アプリ側で判断しなければなりません。
以下、使用例です。
何も書いてない状態で押した場合。
(
さらに2回押した場合。
(((
数字だけ、もしくは数字と演算子と数字を記入後、押した場合。
(((7)
(((5+5)
さらに2回押した場合。
(((7)))
(((5+5)))
ここから、さらにもう1回押した場合。(掛ける記号と開き括弧が付きます。)
(((7)))(
(((5+5)))(
下のように実装しました。愚直に括弧の数を調べて
閉じ括弧が開き括弧より少なければ、閉じ括弧を追加する。
同じ数なら掛ける演算子と開き括弧を付ける形にしました。
皆様ならどのようにやりますでしょうか?
javascript
1$("#brackets_btn").click(function() { 2 var prev = $("#input").text(); 3 switch (bracketsCheck(prev)) { 4 case BRACKETS.OPEN: 5 $("#input").text(prev + "("); 6 break; 7 case BRACKETS.CLOSE: 8 $("#input").text(prev + ")"); 9 break; 10 case BRACKETS.MULTI: 11 $("#input").text(prev + "*("); 12 break; 13 default: 14 } 15}); 16 17function bracketsCheck(prev) { 18 if(prev === "") return BRACKETS.OPEN; 19 if(prev.endsWith('(') === true) return BRACKETS.OPEN; 20 if(/[\+\*\-\/]$/.test(prev) === true) return BRACKETS.OPEN; 21 var arr = /\(+[\d\+\-\*\/\)]+$/.exec(prev); 22 var brac_cnt_obj = getBracketsCount(arr[0]); 23 if(brac_cnt_obj.open > brac_cnt_obj.close) return BRACKETS.CLOSE; 24 if(brac_cnt_obj.open === brac_cnt_obj.close) return BRACKETS.MULTI; 25} 26
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。