当前位置:  开发笔记 > 编程语言 > 正文

如何在Java中执行字符串Diffs?

如何解决《如何在Java中执行字符串Diffs?》经验,为你挑选了2个好方法。

我需要在Java字符串之间执行Diffs.我希望能够使用原始字符串和diff版本重建字符串.有没有人用Java做过这个?你用什么图书馆?

String a1; // This can be a long text
String a2; // ej. above text with spelling corrections
String a3; // ej. above text with spelling corrections and an additional sentence

Diff diff = new Diff();
String differences_a1_a2 = Diff.getDifferences(a,changed_a);
String differences_a2_a3 = Diff.getDifferences(a,changed_a);    
String[] diffs = new String[]{a,differences_a1_a2,differences_a2_a3};
String new_a3 = Diff.build(diffs);
a3.equals(new_a3); // this is true

bernardn.. 48

这个库似乎可以解决这个问题:google-diff-match-patch.它可以根据差异创建补丁字符串,并允许重新应用补丁.

编辑:另一种解决方案可能是https://code.google.com/p/java-diff-utils/



1> bernardn..:

这个库似乎可以解决这个问题:google-diff-match-patch.它可以根据差异创建补丁字符串,并允许重新应用补丁.

编辑:另一种解决方案可能是https://code.google.com/p/java-diff-utils/


google-diff-match-patch的Maven存储库是[那里](https://bitbucket.org/cowwoc/google-diff-match-patch/wiki/Home).
主动维护的java-diff-utils分支似乎是https://github.com/bkromhout/java-diff-utils

2> Paul Whelan..:

Apache Commons有String diff

org.apache.commons.lang.StringUtils

StringUtils.difference("foobar", "foo");


它返回第二个String的剩余部分,从它与第一个字符串的不同开始.这对我来说效率不高,因为我会使用大文本.请参阅:StringUtils.difference("ab","abxyz") - >"xyz"StringUtils.difference("ab","xyzab") - >"xyzab";
推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有