1、引入1个比较的jar包
<dependency>
<groupId>io.github.java-diff-utils</groupId>
<artifactId>java-diff-utils</artifactId>
<version>4.9</version>
</dependency>
2、编码
public static String[] getHighString(
String oldText,String newText,String insertLeftTag,
String insertRightTag,String delLeftTag,String delRightTag,Long languageId
){
//默认拆词
Boolean inlineDiffByWord=true;
//25:日语,55,中文简体,56:中文繁体
List<Long> languageArray=new ArrayList<>();
languageArray.add(25l);
languageArray.add(55l);
languageArray.add(56l);
if(languageArray.contains(languageId)){
inlineDiffByWord=false;
}
try {
DiffRowGenerator generator = DiffRowGenerator.create()
.showInlineDiffs(true)
.mergeOriginalRevised(false)
.inlineDiffByWord(inlineDiffByWord)
.oldTag(f -> f+insertLeftTag)
.newTag(f -> f+delLeftTag)
.build();
List<DiffRow> rows = generator.generateDiffRows(
Arrays.asList(oldText),
Arrays.asList(newText));
if(rows.size()==0){
return new String[]{oldText,newText};
}
String oldLine = rows.get(0).getOldLine();
if(StringUtils.isNotEmpty(oldLine)){
oldText=oldLine.replaceAll("true"+insertLeftTag,insertLeftTag).replaceAll("false"+insertLeftTag,insertRightTag);
}
String newLine = rows.get(0).getNewLine();
if(StringUtils.isNotEmpty(newLine)){
newText=newLine.replaceAll("true"+delLeftTag,delLeftTag).replaceAll("false"+delLeftTag,delRightTag);
}
}catch (Exception e){
e.printStackTrace();
return new String[]{oldText,newText};
}
return new String[]{oldText,newText};
}