用于自由文本差异的Java库

Jos*_*Fox 17 java string comparison diff text

我需要匹配两个几乎相同的长自由文本字符串; 即,尽可能找到索引到索引的对应关系.

因为这是自由文本,所以比较不应该像代码差异一样基于行.

有关Java库的任何建议吗?

一个简单的例子(在现实生活中,当然,不会有额外的空格来排列,并且可能会有更复杂的挑战,比如整个条款的移动.)

The quick brown  fox jumped over the  lazy     dog.
||||||||||      |||||||||||||||||||||         |||||
The quick yellow fox jumped over the well-bred dog.
Run Code Online (Sandbox Code Playgroud)

Jos*_*Fox 16

这个可能是很好的Diff Match Patch.


Fab*_*eeg 8

根据您的具体要求,在StringUtils类的阿帕奇共享郎组件可能是有用的,例如:

  • StringUtils#difference:比较两个字符串,并返回它们不同的部分
  • StringUtils#getLevenshteinDistance:找到两个字符串之间的Levenshtein距离