2017-02-23 4 views
0

Ok название может быть не правильно, но это то, что я пришел, как лучшийКак найти минимальные строки замены или регулярное выражение, чтобы преобразовать строку в другую строку

Мой вопрос заключается в

Пример 1

see, saw

можно преобразовать see в saw с таким

заменить ee с aw

 string srA = "see"; 
     string srB = "saw"; 

     srA = srB.Replace("aw", "ee"); 

Или позволяет сказать

show, shown

добавить n к исходной строке

Теперь то, что я хочу это, с минимальной длиной кода, создавая такие процедуры для любых сравненных строк

Ищете ваши идеи, как я могу это сделать? Могу ли я генерировать регулярные выражения автоматически для применения и преобразования?

с # 6

+0

Общая концепция называется [Изменить расстояние] (https://en.wikipedia.org/wiki/Edit_distance) –

+0

@Damien_The_Unbeliever как вы собираетесь применять расстояние редактирования для автоматического преобразования 1 в другое :) – MonsterMMORPG

+0

I указывал на то, что эта общая концепция имеет имя и указывает на нее. Для реальной проблемы, которую вы пытаетесь решить, я думаю, это не имеет большого значения для меня на данный момент - если у вас есть две конкретные строки, знание *, как вы могли бы преобразовать между ними, имеет какой-то смысл, но генерирующий код, который * будет * выполнять преобразование, не очень, для меня, потому что у вас уже есть конечный результат этого преобразования. –

ответ

1

Проверить diffplex и увидеть, если это то, что вам нужно. Если вы хотите создать собственный алгоритм, вместо использования сторонней библиотеки просто перейдите в открытый исходный код.

Вы также можете проверить работу this для оптимизации, но это может усложниться.

Тогда есть также Diff.NET.

Также this blog post является частью серии в реализации инструмента сравнения.

Если вам просто интересно узнать больше о предмете, ваши усилия по поиску в Google должны быть направлены на алгоритм Левенштейна.

Я могу только предположить, какова ваша конечная цель, и время, которое вы готовы инвестировать в это, но я считаю, что первой библиотеки должно быть достаточно для большинства потребностей.

+0

Ty для ответа.Я действительно нахожусь в ограниченном пространстве, поэтому мне нужно хранить операцию с минимализмом. Подобно функции replace или regex. Если бы был создатель регулярных выражений, который был бы супер крутой. – MonsterMMORPG

+0

Судя по этому ответу, никого не существует, к сожалению http://stackoverflow.com/questions/10086332/levenshtein-distance-in-regular-expression – nikovn

Смежные вопросы