2016-07-04 2 views
1

Я как бы застрял на этом футляре. Моя проблема в том, что я хочу найти «похожий» текст и заменить его на правильную.Как сравнить строку и подстроку

Пример:

У меня есть текст: ab123

И у меня есть набор текста: - абв123 - bds983 - fgh2315 - lol922

Мне нужно сделать мой текст заменен самым похожим текстом в моем наборе текста, в этом случае ab123 станет abc123

Я попытался сравнить его с помощью InStr(), но он будет работает только в том случае, если опечатка находится слева или справа, она не будет работать, если опечатка находится посередине.

Вот код

For i = 2 to LastRow 
If (InStr(Cells(i, 1).Value, Cells (3, 4).Value)) <> 0 Then 
Cells(3, 4).Value = Cells(i, 1).Value 
End If 
Next i 

Спасибо за ваше внимание

Рэнди

+1

https://en.wikipedia.org/wiki/Longest_common_subsequence_problem –

ответ

0

Вы в основном хотите добавить свой выбор «правильных» вариантов для пользовательского словаря, а затем выполнить проверку орфографии где вы отключили «игнорировать числа». Вы можете либо настроить его на автоматическое принятие всего, что он находит, либо потребовать от пользователя нажать «ОК», чтобы подтвердить его, либо оставить их в словаре, либо очистить их.

Вы можете войти в кучу логики, где вы напишите алгоритм частичного совпадения для самой длинной общей подпоследовательности, но вы в основном создаете проверку орфографии с тем, что вы описали, и у вас уже есть один. Так что, если это не позаботится о том, что вам нужно, то, пожалуйста, расширьте, почему бы и нет. :-)

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

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

Существует немало ударов по изменению пользовательских словарей, поэтому я не буду перефразировать код, если вам нужно сделать это в VBA. Выберите свой любимый и пойдите с ним, а затем отправьте сюда, если у вас возникнут проблемы. (Я бы начал новую тему с вопросами, специфичными для того, с чем вы столкнулись.)

Application.SpellingOptions.IgnoreMixedDigits = False'how you ensure words with numbers get 
'spell checked if you end up coding it in VBA 

Удачи!

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