Я столкнулся с проблемой сопоставления строки в тексте, распознанном оптическим распознаванием символов, и нахождения ее позиции, учитывая, что может быть произвольный допуск неправильных, отсутствующих или лишних символов. В результате должна получиться позиция наилучшего совпадения, возможно (не обязательно) с длиной соответствующей подстроки.
Например:
String: 9912, 1.What is your name?
Substring: 1. What is your name?
Tolerance: 1
Result: match on character 7
String: Where is our caat if any?
Substring: your cat
Tolerance: 2
Result: match on character 10
String: Tolerance is t0o h1gh.
Substring: Tolerance is too high;
Tolerance: 1
Result: no match
Я пытался адаптировать алгоритм Левенштейна, но он не работает должным образом для подстрок и не возвращает позицию.
Алгоритм в Delphi будет предпочтительнее, но подойдет любая реализация или псевдологика.