我該如何分割,例如2 + 2,2-1,2 * 1,3/1,甚至是負數,例如2+ -1 a等?我能夠拆分一個運營商,但不能拆分其他運營商。使用javascript的分割算術運算符
回答
我首先刪除任何空格,然後使用正則表達式匹配操作數和操作符,可能類似於/(-?\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()
只存在使控制檯輸出容易而無需滾動閱讀。)
注意,這個正則表達式可以很可能擴展到處理兩個以上操作數,但我會離開,作爲一個練習爲讀者...
不錯,簡潔。我想象的東西比較長,但是再一次。不是我的專業。 –
我正在嘗試它,會讓你知道它是否適用於我的情況 –
它的工作原理,但你會介意添加<< and >>左移和右移。我正在遇到一些困難,使他們工作 –
- 1. 無算術運算符執行位分割
- 2. 算術運算符
- 3. 算術運算的JavaScript
- 4. 存儲和使用算術運算符
- 5. 在算術公式中使用分割()
- 6. 不使用算術運算或按位運算符的加法
- 7. 位運算符算術
- 8. 動態算術運算符
- 9. 推廣算術運算符
- 10. 默認算術運算符
- 11. 在PHP(算術運算符)
- 12. PHP算術運算符++
- 13. 算術運算符混淆
- 14. 算術運算
- 15. 算術運算
- 16. 算術運算
- 17. 算術運算
- 18. 算術運算
- 19. 在javascript中的順序算術運算
- 20. 字符串數組中的Javascript算術運算符
- 21. 算術運算符後面的一元運算符
- 22. 使用標準的算術運算
- 23. Golang:結構上的算術運算符
- 24. JADE中的算術運算符
- 25. Awk中的算術運算符無效
- 26. 算術運算符的邏輯?
- 27. Haskell中的字符算術運算
- 28. 列內的算術運算符
- 29. linq中的算術運算符
- 30. Javascript運算符優先級技術性
你是什麼意思的「拆分」? – Pointy
不知道你是什麼意思。你能詳細說明你的投入和預期產出嗎? –
如果你願意的話! –