我正在Java程序中生成graphviz DOT文件(这是一个示例:http://www.graphviz.org/Gallery/directed/cluster.html)。我想基于大括号自动缩进此文件。在Java中有一种简单的方法吗?谢谢!
答案 0 :(得分:2)
伪码
int indent=0;
for (line):
print ('\t' for each indent) + line
if (line.contains('{'))indent++
if (line.contains('}')} indent --;
如果显示示例输出时括号中的线条尚未断开,请通过断开换行符“{”或“}”来重复这些行。
答案 1 :(得分:0)
我想这个问题有各种解决方案。根据要求,您可能需要一个优雅的解决方案,可以让您轻松地为最终输出设置模板。然后,您需要了解graphviz文件格式,并可能按块识别代码作为节点。然后工作很简单:输出节点(我的意思是代表节点的代码)深度为i,其中包含indents = i * 4个空格。
由于我不了解graphviz文件,我可能会将其视为纯文本文件。 所以你需要做的就是
1. open the graph file,
2. create a temp file for the final output
3. set indent = 0.
4. read one line, if not null, search the line for braces, for every opening brace, ++indent
and --indent for every closing brace.
NOTE:you need to escape the escaped braces if there is any. say "{" or \{
5. write the line to the temp file with preceding spaces = 4*indent (assuming you want 4 spaces for every indent)
6. close both files. if needed, replace the old file with the temp file.
由于我可能没有正确理解你的设备,因此伪代码在功能上可能是无用的。但你明白了这一点; - )