Определить, похожи ли две строки в Javascript? - PullRequest
16 голосов
/ 14 октября 2010

Допустим, у меня есть две строки, есть ли способ проверить, похожи ли они хотя бы на 90%?

var string1 = "theBoardmeetstoday,tomorrow51";
var string2 = "Board meets today, tomorrow";

Спасибо,

Tegan

Ответы [ 4 ]

16 голосов
/ 14 октября 2010

Запись в Википедии для Расстояние Левенштейна включает пример реализации.

10 голосов
/ 14 октября 2010

jsdifflib - это порт JavaScript превосходной библиотеки Python difflib .

Имеет функцию ratio(), которая "возвращает [s] мерусходства последовательностей в виде числа с плавающей точкой в ​​диапазоне [0, 1]."

4 голосов
/ 22 марта 2012

String.levenshtein (плагин MooTools)

проверить: http://mootools.net/forge/p/string_levenshtein

GitHub: https://github.com/thinkphp/String.levenshtein

Этот метод вычисляет расстояние Левенштейна между двумя строками.В теории информации и информатике расстояние Левенштейна является метрикой для измерения величины разности между двумя последовательностями (называемой расстоянием редактирования).Расстояние Левенштейна между двумя строками задается минимальным количеством операций, необходимых для преобразования одной строки в другую данную строку, где возможными операциями являются вставка, удаление или замена одного символа.

Алгоритм расстояния Левенштейна использовался в:

  • Проверка орфографии
  • Распознавание речи
  • Анализ ДНК
  • обнаружение плагиата
3 голосов
/ 27 сентября 2018

Также рассмотрим Коэффициент Кости , который считается «в основном лучше», чем расстояние Левенштейна, создателем репозитория github string-Подобия *1004* и соответствующего ему модуля npm * 1006.*.

Использование из своих документов:

var stringSimilarity = require('string-similarity');

var similarity = stringSimilarity.compareTwoStrings('healed', 'sealed'); 

var matches = stringSimilarity.findBestMatch('healed', ['edward', 'sealed', 'theatre']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...