如何將算術表達式與空間分離,例如我有這個表達式22+(33 * 1)我想用同一個字符串中的運算符之間的空格拆分它們(返回一個字符串)像22 +(33 * 1)通過使用StringTokenizer的方式java:將算術表達式分解爲令牌
回答
你的規則比你想象的要簡單。大概正確的java:
expr = expr.replaceAll('+', ' + ')
.replaceAll('-', ' - ')
.replaceAll(')', ') ')
//etc
.replaceAll(' ', ' '); //remove any double spaces added.
原始表達式中已經有空格時不起作用。你會介紹additinal的。 (這可能會被淘汰) – AlexWien
這是關閉我所做的,雖然不是真的相同的代碼,但想法是 – lemoncodes
這並不容易。你必須解析表達式並且構建一個令牌樹。你最後表現得像 解析器。然後重新創建表達式並在 之間插入一個空格每個元素。
嘗試搜索解析算術表達式
一旦他有樹,很難看出他爲什麼會想要回到線性字符串。奇怪的問題。 – EJP
是的,奇怪的是,缺乏動力 – AlexWien
即時通訊不構建樹,即時通訊只是用空格分隔每個操作數和操作符,構建樹是爲了我的程序的後期部分,即時通訊只是將它構建爲樹部分,簡單地說,我只是想操作符和操作符與空白基本上它只是字符串沒有任何其他strcuture – lemoncodes
您可以使用多個String.replaceAll
語句用運算符用空格替換運算符。
只是爲了澄清,你不需要*多個'replaceAll'表達式。它可以使用一個正則表達式和替換魔術來完成。 –
- 1. 令牌化算術表達式?
- 2. 正則表達式將算術表達式分解成部分
- 3. 解析算術表達式
- 4. 算術表達式解析
- 5. 將算術表達式表示爲樹
- 6. 如何使用Java基於正則表達式將文件分解爲令牌
- 7. 算術表達式
- 8. c#將算術表達式拆分爲字符串[]
- 9. 舍入算術表達式
- 10. BASH算術表達式
- 11. 算術表達式語法
- 12. 將字符串中的不等式符號分解爲令牌? (Java /正則表達式)
- 13. 將簡單計算器更改爲算術表達式
- 14. 技術需要編寫一個算術表達式解析器
- 15. 如何將其分解爲令牌?
- 16. 如何計算算術表達式
- 17. 如何將算術表達式從SQL轉換爲JPQL?
- 18. 用樹表示的算術表達式
- 19. 前綴表示法中的算術表達式語法(Java Cup)
- 20. 令牌正則表達式:表示最後一個令牌/不再有令牌
- 21. 將表達式拆分爲術語集合
- 22. 算術表達式演算值爲零當與parentesis
- 23. 正則表達式 - Java的拆分命令解析CSV文件
- 24. Prolog中的算術表達式
- 25. 指針算術 - 相同的表達式?
- 26. 派生一個算術表達式?
- 27. 冪算術常量表達式
- 28. 帶小數點算術表達式
- 29. Tcl,Perl中的算術表達式
- 30. 藥劑:(ArithmeticError)的算術表達式
你試過什麼嗎? –
是試圖使用StringTokenizer與「」與「」分離,但它的結果是2 2 +(3 3 * 1)它是分離每個數字,我只是想分開它每個操作數像我上面所述 – lemoncodes
一個低效的方法會用自己替換每個標記,然後用空格(使用'String.replaceAll'),然後用'\ x20 +'的正則表達式(使用'String.split')分割字符串。快速和骯髒,但可能會滿足您的要求。 –