![](/img/trans.png)
[英]webview inside the listview in Android, javascript arithmetic operations not working
[英]Arithmetic operations inside the parenthesis javascript
嗨,請幫我解決這個問題
var str = '10+20-10-2';
var numbers = str.replace(/ /g, '').split(/[-+*\/]/g);
var operators = str.replace(/ /g, '').split(/\d*/g);
operators.shift();
var result = +numbers[0];
for (var i = 0; i < operators.length - 1; i++) {
result = eval( result + operators[i] + numbers[i + 1] );
}
alert(result);
上面的代碼工作正常,但是在嘗試傳遞其他輸入時,例如
var str = '-(1)-(-2)';
var str = '-1-(-1)';
var str = '(-1)-2' ;
沒有任何結果
我想在您的情況下,除了評估外,您還可以使用
var result = parseFloat(numbers[0]);
因此
result = eval( result + operators[i] + parseFloat(numbers[i + 1]))
這更加可靠,因為僅當數字中的字符串真正包含數字時才有效,否則將返回NaN
。 另外,為了更加扎實,您可以走很長一段路,並使用switch
指令:
switch(operators[i])
{
case "+":
etc.
}
當然,您的解決方案更加優雅,但是由於某種原因它無法正常工作,因此這可能會幫助您發現它。 在您中,我還將使用幾個alert()
函數檢查這些拆分數組的實際內容。 有時,正則表達式無法產生預期的輸出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.