2017-02-18 17 views
-1

我該如何分割,例如2 + 2,2-1,2 * 1,3/1,甚至是負數,例如2+ -1 a等?我能夠拆分一個運營商,但不能拆分其他運營商。使用javascript的分割算術運算符

+0

你是什麼意思的「拆分」? – Pointy

+1

不知道你是什麼意思。你能詳細說明你的投入和預期產出嗎? –

+0

如果你願意的話! –

回答

1

我首先刪除任何空格,然後使用正則表達式匹配操作數操作符,可能類似於/(-?\d+)(\+|\*|\/|-|<<|>>)(-?\d+)/。與.match()調用,並與測試,以確保該字符串比賽,你想最終是這樣的:

function parseItUp(str) { 
 
    var result = str.replace(/\s/g,'').match(/(-?\d+)(\+|\*|\/|-|<<|>>)(-?\d+)/) 
 
    return result ? result.splice(1) : null 
 
} 
 

 
console.log(JSON.stringify(parseItUp("2 + 3"))) 
 
console.log(JSON.stringify(parseItUp("2/-3"))) 
 
console.log(JSON.stringify(parseItUp("-2 * 3"))) 
 
console.log(JSON.stringify(parseItUp("2 - 3"))) 
 
console.log(JSON.stringify(parseItUp("2 - -3"))) 
 
console.log(JSON.stringify(parseItUp("2 << -3"))) 
 
console.log(JSON.stringify(parseItUp("2 >> -3"))) 
 
console.log(JSON.stringify(parseItUp("2 3"))) // returns null because there's no operator

.splice(1)的調用是省略的第一項從數組中,這將是整個匹配的字符串。

(該JSON.stringify()只存在使控制檯輸出容易而無需滾動閱讀。)

注意,這個正則表達式可以很可能擴展到處理兩個以上操作數,但我會離開,作爲一個練習爲讀者...

+0

不錯,簡潔。我想象的東西比較長,但是再一次。不是我的專業。 –

+0

我正在嘗試它,會讓你知道它是否適用於我的情況 –

+0

它的工作原理,但你會介意添加<< and >>左移和右移。我正在遇到一些困難,使他們工作 –