Строковые Метрики Подобия содержат обзор многих различных метрик, используемых в сравнении строк (, Википедия имеет обзор также). Большая часть этих метрик реализована в библиотеке simmetrics.
еще один пример метрики, не включенной в данный обзор, например расстояние сжатия (пытающийся приблизиться сложность Kolmogorov ), который может использоваться некоторое время более длинные тексты, чем тот, который Вы представили.
Вы могли бы также рассмотреть рассмотрение намного более широкого предмета Обработка естественного языка . Эти пакеты R могли запустить Вас быстро (или по крайней мере дать некоторое представление).
И одно последнее редактирование - ищут другие вопросы на этом предмете в Так, существует довольно много связанных.
Я обошел это, установив "цепочку" команд. Я создал объект Command, содержащий другие команды, а затем запускал каждую из них по очереди при вызове Do. В вашем случае вы могли бы заставить команду вызывать делегата и запускать следующую команду в последовательности только в том случае, если она была успешной.
Я полагаю, один из способов сделать это.
Не так уж плохо вернуть логическое значение или объект, представляющий некоторый статус. Это может показаться неуклюжим, но это просто и понятно.
Одна реализация, которую я использую, выглядит примерно так:
Сначала я добавляю объекты Command в список.
List<ICommand> commands = new List<ICommand>;
commands.Add(command1);
commands.Add(command2);
Затем список объектов Command выполняется следующим образом :
foreach (ICommand command in commands)
{
bool success = command.Execute();
if (!success) break;
}