我正在做一个比较两个大文本文件版本(大约 5000 多行文本)的项目。较新的版本包含潜在的新内容和已删除的内容。它旨在帮助检测文本版本的早期变化,因为团队从该文本中接收信息。
为了解决这个问题,我使用了diff-match-patch库,它允许我识别已删除的内容和新内容。在第一步中,我搜索更改。
public void compareStrings(String oldText, String newText){
DiffMatchPatch dmp = new DiffMatchPatch();
LinkedList<Diff> diffs = dmp.diffMain(previousString, newString, false);
}
然后我通过关键字 INSERT/DELETE 过滤列表以仅获取新/删除的内容。
public String showAddedElements(){
String insertions = "";
for(Diff elem: diffs){
if(elem.operation == Operation.INSERT){
insertions = insertions + elem.text + System.lineSeparator();
}
}
return insertions;
}
但是,当我输出内容时,有时我只得到单个字母,例如 (o, contr, ler),而只删除/添加了单个字符。相反,我想输出发生变化的整个句子。有没有办法从发生更改的 DiffMatchPatch 中检索行号?