字符串处理的算法

时间:2013-04-05 16:04:51

标签: java string algorithm compiler-construction

我有一个问题让我思考如何提高系统的速度和内存。 我将通过示例对其进行描述,我有这个文件有一些字符串:

<e>Customer</e>
    <a1>Customer Id</a1>
    <a2>Customer Name</a2>
<e>Person</e>

它类似于xml文件。

现在,我的解决方案就是当我阅读<e>Customer</e>时,我将从那里读到最近的标签,然后从<e>Customer</e>子串到最近的标签。

它使系统需要处理这么多。我只用正则表达式来做。我想我会像真正的编译器那样做一些阶段(词法分析,解析器)。

有什么想法吗?

提前致谢!

3 个答案:

答案 0 :(得分:2)

正则表达式不是解析像这样的复杂结构的正确工具。由于您的文件看起来很像XML,因此添加缺少的文件以使其成为XML(即标题)可能是有意义的,并将结果提供给XML解析器。

XML解析器针对快速处理大量数据进行了优化(尤其是SAX类型)。如果转换为使用正则表达式处理大量文本来解析XML,则应该会看到性能的显着提高。

答案 1 :(得分:2)

如果您真的不想使用其中一个免费且可靠的xml解析器,那么真正快速的解决方案几乎肯定会涉及状态机。

请参阅此How to create a simple state machine in java问题,以获得良好的开端。

请确保非常有充分理由采取这条路线。

答案 2 :(得分:1)

不要把时间花在XML词法分析器/解析器上(它不值得)并使用那里已经存在的东西。

例如http://www.mkyong.com/tutorials/java-xml-tutorials/是一个很好的教程,只需使用谷歌。