Ashotovich
Новичок
Сравнение двух строк
Всем доброго дня.
Пытаюсь найти решение следующей задачи.
Есть: строка текста - название организации. Она хранится в БД. Существует возможность редактирование записи из формы.
Нужно: сравнить отредактированную строку с исходной на наличие кардинальных изменений и, в случае большого несовпадения строк, предложить сохранить запись как новую.
Как вариант можно рассмотреть такое: посимвольно запихиваем в один массив исходную строку, в другой - отредактированную строку, спавниваем в цикле массивы поэлементно. Количество совпадений делим на длину первого массива, получаем процент несовпадений. По нему и решаем - сохранить отредактированные данные в старую запись, или предложить создать новую.
Естественно, что данный метод не выдерживает никакой критики, ибо если пользователю вздумается вставить в начало строки только один символ, то вся строка "поедет" и несовпадений будет посчитано слишком много, хотя объективно в строке изменился только один символ.
Да, еще одна мысль - отсортировать оба массива при помощи sort() и сравнивать их не по позиции, а по по количеству букв алфавита, цифр и вспомогательных символов (допустим, в первом массиве 10 букв "а", 5 "б", 3 "в", а во втором - 8 букв "а", 6 "б" и 4 "в" - относительное несовпадение: 22%). Недостаток ясен - можно составить две абсолютно разных строки, состоящих из одих и тех же символов в одинаковых количествах - совпадение будет 100%.
Если есть какие мысли - поделитесь, плиииз.
Заранее спасибо.
Всем доброго дня.
Пытаюсь найти решение следующей задачи.
Есть: строка текста - название организации. Она хранится в БД. Существует возможность редактирование записи из формы.
Нужно: сравнить отредактированную строку с исходной на наличие кардинальных изменений и, в случае большого несовпадения строк, предложить сохранить запись как новую.
Как вариант можно рассмотреть такое: посимвольно запихиваем в один массив исходную строку, в другой - отредактированную строку, спавниваем в цикле массивы поэлементно. Количество совпадений делим на длину первого массива, получаем процент несовпадений. По нему и решаем - сохранить отредактированные данные в старую запись, или предложить создать новую.
Естественно, что данный метод не выдерживает никакой критики, ибо если пользователю вздумается вставить в начало строки только один символ, то вся строка "поедет" и несовпадений будет посчитано слишком много, хотя объективно в строке изменился только один символ.
Да, еще одна мысль - отсортировать оба массива при помощи sort() и сравнивать их не по позиции, а по по количеству букв алфавита, цифр и вспомогательных символов (допустим, в первом массиве 10 букв "а", 5 "б", 3 "в", а во втором - 8 букв "а", 6 "б" и 4 "в" - относительное несовпадение: 22%). Недостаток ясен - можно составить две абсолютно разных строки, состоящих из одих и тех же символов в одинаковых количествах - совпадение будет 100%.
Если есть какие мысли - поделитесь, плиииз.
Заранее спасибо.