字符串操作或递归函数?

Cou*_*ndo 5 java string stack design-patterns composite

我正在用Java编写HTML编辑器.我希望它支持自动缩进.我实现了一个Composite模式来表示当前正在编辑的文件中的HTML标记对象.例如,这段代码:

<table> <tr> <th>Col1</th> <th>Col2</th> </tr> <tr> <td>Data1</td> <td>Data2</td> </tr> </table>

会在复合材料中产生这种结构表示:

  • table - > tr(first),tr(second)
  • tr(第一) - > th(Col1),th(Col2)
  • tr(second) - > td(Data1),td(Data2)

其中x - > y,z表示x是y和z的父级.

我有两个选择:

  1. 创建一个递归函数以返回包含缩进的字符串.
  2. 创建一个递归函数,只返回当前HTML代码的非格式化字符串,然后在缩进中添加.

第一个很容易做到; 但是,如果用户的缩进模式改变了模式,我发现很难继续自动缩进.因此,我认为选项2更可取.如果我能让它正常工作,我觉得这也可能更有活力.问题是,我不太确定如何操纵字符串.

我的想法是我可以以某种方式使用堆栈.我可以将一个打开的标签推到它上面并在它关闭时将其弹出.堆栈上的标签数量将决定我需要在新行上的下一个标签之前缩进的次数.我可以使用整数,但同样的概念适用.问题是我不知道如何遍历字符串中的标签,以便我可以操纵它.

那么,有没有办法像我描述的那样进行字符串操作?或者使用递归函数更好?

ful*_*.ex 1

鉴于你提出的问题如此清晰,我认为你是回答这个问题的最佳人选,你只是需要更多信息。

要提供该信息,这可能会有所帮助:

  1. 考虑文本的整个生命周期。您将需要对击键等做出反应。然后将模型和演示文稿清楚地分开,这比操作填充的字符串要好得多。另一个好处是您可以相对独立于模型选择现有的文本编辑组件

  2. 考虑示例:富文本编辑器、jEdit 等开源软件等。