我正在寻找一种以编程方式检测两个字符串之间的delta比率的方法。我可以使用字符串长度,但是对于大小相似但输入不同的情况,这并没有提供太多有用的信息。谷歌代码Java Diff Utils上有一个java diff工具,但它自2011年以来一直没有更新,我不需要实际修改字符串本身。
我正在尝试使用阈值进行更改检测,例如:更新的字符串与现有字符串不同42%,您确定要继续吗?
有没有人知道可以用于此的库,或者java-diff-utils是我唯一的选择吗?我在apache公共场所找不到多少,谷歌搜索正在返回无关的信息。
答案 0 :(得分:3)
您可以使用Levenshtein Distance来计算两个字符串之间的差异。那里有一些非常复杂的数学,但实际的代码相当短。您可以使用Java轻松地重写该wiki中的代码。
差异将以整数来衡量,表示将一个字符串转换为另一个字符串需要多少步骤。步骤可以是用另一个字符添加,删除或替换字符。它会告诉您它所采取的步骤数量,但不会告诉您哪些步骤,也不是以哪种顺序。但话说回来,既然您只想衡量总差额,我确信这些信息足以满足您的需求。
编辑:其中一位评论者(kaos)提供了an implementation of Levenshtein Distance in the Apache Commons.
的链接