最近项目上需要实现一个类似于两个字符串比较差异并将差异展现出来,搜索了很多方法都不好用,最终在gitHub上找到了一个超厉害的工具,今天记录一下,方便有需要的朋友
1 导入jar包
<dependency> <groupId>io.github.java-diff-utils</groupId> <artifactId>java-diff-utils</artifactId> <version>4.5</version> </dependency>
2 简单使用
@Test public void test5(){ String target = "this is demo \n this is diff "; String source = "this is demo \n this is good"; try { List<String> targetS = Arrays.asList(StringUtils.split(target, "\n")); List<String> sourceS = Arrays.asList(StringUtils.split(source, "\n")); Patch<String> diff = DiffUtils.diff(targetS, sourceS); System.out.println(JSONObject.toJSONString(diff)); List<String> strings1 = UnifiedDiffUtils.generateUnifiedDiff("target", "source", targetS, diff, 1); System.out.println(strings1); } catch (DiffException e) { e.printStackTrace(); } }