我正在用 Java 编写 HTML 编辑器。我希望它支持自动缩进。我实现了一个复合模式来表示当前正在编辑的文件中的 HTML 标记对象。例如,这段代码:
<table> <tr> <th>Col1</th> <th>Col2</th> </tr> <tr> <td>Data1</td> <td>Data2</td> </tr> </table>
将导致复合材料中的这种结构表示:
- 表 -> tr(第一),tr(第二)
- tr(first) -> th(Col1), th(Col2)
- tr(秒) -> td(Data1), td(Data2)
其中 x -> y, z 表示 x 是 y 和 z 的父级。
我在这里有两个选择:
- 创建一个递归函数以返回包含缩进的字符串。
- 创建一个递归函数,它只返回当前 HTML 代码的非格式化字符串,然后添加缩进。
做第一个很容易;但是,如果用户更改了模式,我发现很难继续按照用户的缩进模式自动缩进。因此,我认为选项 2 更可取。如果我能让它正常工作,我觉得这也可能更具动态性。问题是,我不太确定如何操作字符串。
我的想法是我可以以某种方式使用堆栈。我可以将一个打开的标签推到它上面,并在它关闭时将其弹出。堆栈上的标签数量将决定我需要在新行的下一个标签之前缩进的次数。我可以改用整数,但同样的概念也适用。问题是我不知道如何遍历字符串中的标签以便我可以操作它。
那么,有没有办法按照我描述的方式进行字符串操作?还是使用递归函数更好?