2012-11-26 77 views
-1

這是我的問題:我有一個字符串,它是一個表達式。該表達式包含數字常量,變量,邏輯運算符。例如:4 * A & & B,X + 5> Y。 此外,我有一個翻譯地圖(字符串 - >字符串),它基本上翻譯變量。字符串操作(Java)

需要的輸出是翻譯的表達式。 由於此示例,簡單替換失敗:表達式是A & & X其中A - > XX,X-> B。簡單的替換,從A,導致更換X當表達式是XX & & X,然後我得到BB & B,其中期望輸出應該是XX & B.

有什麼建議?

編輯:我想一個可能的解決方案可以寫一個表達式編譯器,知道將表達式解析爲原子單元,以後我可以替換。我只是想知道是否有更簡單的解決方案

+0

將字符串拆分爲變量/運算符列表,然後使用翻譯地圖替換每個變量。 –

+0

簡單的拆分並不是那麼簡單 - 一些變量可以是不同變量的子字符串。如何執行拆分? – duduamar

+0

如果你不想拆分,是否有可能創建另一個StringBuffer來存儲你的解析結果?使用偏移標誌指向表達式中的當前位置,並且一旦變量/運算符被替換,將其存儲到緩衝區中並移動偏移量。如果一個變量可以成爲另一個變量的一部分,那麼您的替換應該是貪婪或者不情願。 – Kleenestar

回答

0

定義「更簡單的解決方案」。

解析表達式爲原子單位(能夠恢復運營,不使用String.split() - 使用PatternMatcher,而不是(從java.util.regex))簡單,將工作。

爲了提高效率,您必須編寫某種詞法分析器,並將窗口中的簡單功能簡化。