我正在Java中做一個簡單的LISP解釋器,我一直無法弄清楚如何正確分割用戶的輸入,以便每個字符都在單獨的索引上,除了多位數字和可能的單詞。我也需要擺脫那種會帶來其他問題的白色空間。如何將一個字符串拆分爲一個數組,但將多個數字/單詞保存在一起?
現在,我使用用戶的輸入拆分成一個字符串,以計算行是:
String[] mainFunc = equation.replaceAll("\\s+", "").split("(?!^)");
Input: (+ 4 3)
Output:
0) (
1) +
2) 4
3) 3
4))
這個工作對我需要什麼,直到2個或多個數字,因爲它會分裂他們成爲單獨的索引。然後我嘗試另一個正則表達式,我發現這裏幾乎花了我需要的照顧,這就是:
String[] mainFunc = equation.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)");
Input: (- 10 3)
Output:
0) (-
1) 10
2)
3) 3
4))
這幾乎是摸索出適合我,但後來我需要拆分第一個括號和運營商,以及擺脫那個空白區域(我試圖在循環中修剪,因爲某些原因我無法擺脫索引2中的空間)。
關於如何去做這件事的最佳方式的任何想法?
非常感謝你,這正是我所需要的! – reekah
@reekah我修改了正則表達式更一般的,例如處理其他操作符等 – Bohemian