文本对比工具google-diff-match-patch
1. 文本对比工具
1.1 文本概述
这里的文本对比工具不是像Beyond Compare工具一样,而是开源的文本对比工具包,通过代码实现文本对比。
Google的开源工具包google-diff-match-patch能够很好的实现文本对比,且兼容java,JavaScript,Python,lua等多种语言。
google-diff-match-patch原理就是文本a经过最少的增删改才能与文本b一样,通过红色,绿色或者横线呈现对比结果,也就是文本a与文本b不一样的地方。
GitHub地址:https://github.com/google/diff-match-patch
这是对应不同语言的实现,像cpp,csharp,dart,java,JavaScript,lua,Python等等。
其中demo是html的文件,直接打开可以清晰看到对比效果。
1.2 demos
解压demos
打开diff.html
1.3 java案例
2. 对比案例验证
java与JavaScript案例验证
2.1 环境准备
- 下载源码,通过GitHub地址:https://github.com/google/diff-match-patch
解压后状态图
- 创建项目引入源码。
2.2 代码实现
源码diff_match_patch两千多行就不粘贴了,代码上传至gitee上来,需要自行下载。
gitee地址:https://gitee.com/rjzhu/test/tree/dev/
import java.util.LinkedList;
import name.fraser.neil.plaintext.diff_match_patch;
public class hello {
public static void main(String args[]) {
diff_match_patch dmp = new diff_match_patch();
LinkedList<diff_match_patch.Diff> diff = dmp.diff_main("Hello World.", "Goodbye World.");
// Result: [(-1, "Hell"), (1, "G"), (0, "o"), (1, "odbye"), (0, " World.")]
dmp.diff_cleanupSemantic(diff);
// Result: [(-1, "Hello"), (1, "Goodbye"), (0, " World.")]
System.out.println(diff);
}
}
2.3 结果验证
启动项目
访问地址:http://localhost:8080/tests/speedtest.html