我正在編寫Java編輯HTML編輯器的過程。我希望它支持自動縮進。我有一個Composite模式實現來表示當前正在編輯的文件中的HTML標記對象。例如,這樣的代碼:字符串操作或遞歸函數?
<table> <tr> <th>Col1</th> <th>Col2</th> </tr> <tr> <td>Data1</td> <td>Data2</td> </tr> </table>
將導致在複合此結構表示:
- 表 - > TR(第一),TR(第二)
- TR(第一) - > TH(Col1中),TH(Col2中)
- TR(第二) - > TD(數據1),TD(DATA2)
其中x - > y,z表示x是y和z的父親。
我這裏有兩個選擇:
- 創建一個遞歸函數返回與縮進一個字符串包含在內。
- 創建一個遞歸函數,該函數僅返回當前HTML代碼的非格式化字符串,然後添加縮進。
很容易做到第一;但是,如果他們改變模式,我覺得很難繼續按照用戶的縮進模式自動縮進。因此,我認爲選項2是可取的。如果我能夠正確地工作,我覺得這也可能更具活力。問題是,我不太確定如何操作字符串。
我的想法是,我可以以某種方式使用堆棧。我可以將一個開放的標籤推到它上面,並在關閉時彈出它。堆棧上的標籤數量將決定我需要在新行上的下一個標籤之前縮進的次數。我可以使用整數來代替,但同樣的概念適用。問題是我不知道如何去遍歷字符串中的標籤,以便我可以操縱它。
那麼,有沒有什麼辦法以我描述的方式來進行字符串操作?或者使用遞歸函數更好嗎?
我認爲最好的選擇可能是使用遞歸函數。非常感謝你。 – CouchCommando