如何实现一个解释两个字符串树之间差异的函数?例如:
diff(["aaa","bbb",["ccc","ddd"],"eee"],
["aaa","bbx",["ccc","ddd"]]);
此功能应报告“bbb”上的编辑和“eee”的删除。如何实现这样的功能?
答案 0 :(得分:2)
对于简单的文本差异,您可以将每个树转换为平面文件。
将节点转换为行,这样每个子节点都会添加选项卡(每个嵌套级别都有一个选项卡)。然后在两个平面文件上运行diff。例如:
["aaa","bbb",["ccc","ddd"],"eee"]
变为(转义标签和换行符):
aaaa
bbb
ccc
ddd
eee
如果需要数字度量,请计算diff输出中的行数。
如果你想获得花哨,它可以按节点进行,但这取决于结果的用途,这是很多工作。