是否存在一个库甚至是标准的API调用,它允许我区分两个字符串并将diff字符的数量作为int?我不介意其他功能,只要我能获得更多程序化的差异结果(例如int)而不是只输出整个人类可读差异的东西。
答案 0 :(得分:6)
我认为你想要的是Leveshtein distance - 它告诉你将一个字符串转换成另一个字符串需要多少次更改(插入,删除或替换)。
例如,abcde
和abcdef
之间的差异为1,因为您在f
的最后一个位置后插入abcde
以获取abcdef
。
abcde
和abcdf
之间的差异也是1,因为您将第一个字符串中的e
替换为f
以获得第二个字符串。
abcde
和abde
之间的差异为1,因为您删除了第一个字符串中的c
以获得第二个字符串。
可以在Apache Commons Text:LevenshteinDistance中找到非常好的实施方案。
答案 1 :(得分:1)
我不知道任何标准API调用,但您可以看到此问题以引用第三方库(这并不奇怪 - Google,Apache Commons ......)
How to perform string Diffs in Java?
How to perform string Diffs in Java?