2

我正在寻找一种以编程方式检测两个字符串之间的增量比率的方法。我可以使用字符串长度,但这并没有为大小相似但不同的输入提供太多有用的信息。谷歌代码Java Diff Utils上有一个 java diff 工具,但它自 2011 年以来没有更新,我不需要自己实际修改字符串。

我正在尝试使用阈值进行更改检测,例如:更新的字符串与现有字符串有 42% 的差异,您确定要继续吗?

有谁知道可以用于此的库,或者 java-diff-utils 是我唯一的选择吗?我在 apache commons 中找不到太多东西,而且谷歌搜索正在返回不相关的信息。

4

1 回答 1

3

您可以使用Levenshtein 距离来计算两个字符串之间的差异程度。那里有一些相当复杂的数学,但实际代码相当短。您可以轻松地用 Java 重写该 wiki 中的代码。

差异将以整数衡量,表示将一个字符串转换为另一个字符串需要多少步。一个步骤可以是一个字符的添加、删除或替换为另一个字符。它会告诉你它所采取的步骤数量,但不会告诉你哪些步骤,也不是按什么顺序。但是话又说回来,由于您只想测量总差异,我相信这足以满足您的需求。

编辑:其中一位评论者 (kaos) 提供了Apache Commons 中 Levenshtein Distance 实现的链接。

于 2013-08-08T12:55:49.050 回答