Java: библиотека сравнения строк, которая возвращает счетчик различий как int? - PullRequest
4 голосов
/ 15 апреля 2010

Существует ли библиотека или даже стандартный вызов API, который позволяет мне вычислять две строки и получать число различий в виде целых?Я не буду возражать против других функций, лишь бы я мог получить более программный результат сравнения (например, int) вместо того, чтобы просто выводить весь читаемый человеком разностный файл.

Ответы [ 2 ]

6 голосов
/ 15 апреля 2010

Я думаю, что вам нужно Расстояние Левешштейна - это говорит вам, сколько изменений (вставок, удалений или замен) требуется для преобразования одной строки в другую.

Например, разница между abcde и abcdef равна 1, потому что вы вставляете f после последней позиции в abcde, чтобы получить abcdef.

Разница между abcde и abcdf также равна 1, поскольку вы заменяете e в первой строке на f, чтобы получить вторую.

Разница между abcde и abde равна 1, поскольку вы удаляете c в первой строке, чтобы получить вторую.

Очень хорошая реализация может быть найдена в Apache Commons Text : LevenshteinDistance .

Вот пример примера реализации в Java .

1 голос
/ 15 апреля 2010

Я не знаю ни одного стандартного вызова API, но вы могли видеть этот вопрос для ссылок на сторонние библиотеки (не удивительно - Google, Apache Commons ...)

Как выполнить строковые различия в Java?
Как выполнить строковые различия в Java?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...