Тема: Поиск слов в сМеШАнноМ регистре
Можно ли как-то эффективно искать все возможные комбинации слов, ошибочно написанных в смешанном регистре? Скажем, при помощи подстановочных знаков? Может, есть какие-то функции, свойства?
Заранее благодарен.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Можно ли как-то эффективно искать все возможные комбинации слов, ошибочно написанных в смешанном регистре? Скажем, при помощи подстановочных знаков? Может, есть какие-то функции, свойства?
Заранее благодарен.
Всё, что я могу предложить, это предложить, это проверять регистр с помощью свойства Case. Для смешанного регистра это свойство возвращает значение 5 (wdToggleCase):
With ActiveDocument.Range.Find
.Text = "<[А-яЁё\-]@>"
.MatchWildCards = True
While .Execute
If .Parent.Case = wdToggleCase Then
End If
DoEvents
Wend
End With
Но работать будет жутко медленно: ведь это каждое слово нужно проверить!
Спасибо! Буду использовать как вариант, хотя каждое слово - на документах страниц этак на 2 тыс. - конечно, немыслимо. Потом, есть ложные срабатывания, например, ABCs и т.д.
Почему же срабатывание ложное? Регистр в слове смешанный? Смешанный. Так что всё правильно.
Я вот что подумал, зачем поиск, если нам нужны все слова? Может просто перебирать их?
Dim oWord As Range
For Each oWord In ActiveDocument.Words
If oWord.Case = wdToggleCase Then
End If
Next
Почему же срабатывание ложное? Регистр в слове смешанный? Смешанный. Так что всё правильно.
Ложное срабатывание поскольку очевидно, что -s - это окончание, которое по правилу должно так писаться. Ведь заглавные буквы в слове не считаются смешанным регистром. Собственно, вопрос этот не к вам, а к бейсику, который такую ситуацию не отрабатывает. И я очень рад, что сие обстоятельство всплыло в момент "прокатки" вашего макроса. Видимо, придется искать обходные и не столь универсальные пути при помощи подстановочных знаков. Или дописывать обработку.
Как «ошибочно», а как «правильно»?
Если речь идет о словарных словах, то достаточно найти слова содержащие:
1. сочетание: малая буква + большая буква
2. несколько больших букв и хотя бы одну малую.
Т.е. найти с подстановочными знаками сначала слова с текстом "[а-яё][А-ЯЁ]", затем слова с текстом "[А-ЯЁ][А-ЯЁ][а-яё]".
Если речь об акронимах, то для них правил не существует.
Т.е. найти с подстановочными знаками сначала слова с текстом "[а-яё][А-ЯЁ]", затем слова с текстом "[А-ЯЁ][А-ЯЁ][а-яё]".
Я с этого и начал, но есть ситуации типа КОнФеРАнсЬе и т.д., т.е. чем длиннее слово, тем больше количество вариантов, а если пытаться обобщить (скажем, [А-ЯЁ][А-яЁё][А-ЯЁ]), то можно опять словить АБВ, которое в обработке не нуждается.
Я бы так сформулировал задачу поиска:
1. Слово начинается и заканчивается с заглавной, в середине есть прописные
2. Слово начинается с прописной, далее есть заглавные
3. Слово начинается с заглавной, заканчивается прописной, в середине перемешаны прописные и заглавные. (и вот в этой перемеси и зарыта главная собака, ибо количество вариантов велико) Разве что танцевать от гипотетически самого длинного слова (40 букв?) искать чередование регистра гипотетически каждой буквы и на каждый проход поиска сокращать шаблон на единицу. Но временные затраты....
Насчет акронимов/аббревиатур соглашусь лишь в том, что ситуация непростая. Согласитесь, есть разница между ABCs ABС's и ABCS (так что вряд ли можно говорить, что правил нет), но вот только без "искусственного", интеллекта макрос фиг разберет, какой вариант в данной ситуации автор имел в виду.
чем длиннее слово, тем больше количество вариантов
А при чем здесь длина слов?
Как я уже писал, ищем текст: Range.Find.Text="[а-яё][А-ЯЁ]"
Затем берем найденное слово целиком: Range.Expand wdWord
Обрабатываем слово…
Те же действия повторяем с "[А-ЯЁ][А-ЯЁ][а-яё]".
P.S.
Правильно писать [А-ЯЁа-яё], а не "[А-яЁё]". Для ясности, гляньте таблицу символов между «А» и «я».
Как я уже писал, ищем текст: Range.Find.Text="[а-яё][А-ЯЁ]"
А! Семен Семеныч! Спасибо за идею. Покумекаю.
Правильно писать [А-ЯЁа-яё], а не "[А-яЁё]". Для ясности, гляньте таблицу символов между «А» и «я».
Таблица символов:
Тогда получается, что правильно писать [ЁА-ё]?
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Поиск слов в сМеШАнноМ регистре
Кто-то воспринимает компьютер, как рабочий инструмент, кто-то считает его окном в мир, кто-то в восторге от всех глубин и тайн высокоинтеллектуальной железки, а кому-то и дела нет, как он там внутри устроен, лишь бы работал. На портале о Microsoft Office Word вы узнаете про: как поменять кодировку в word 2007. Но всем, так или иначе, приходилось вспомнить, что «вначале было слово». Вряд ли найдется хоть один человек, кто, имея компьютер, ни разу ничего не напечатал. На портале о Microsoft Office Word вы узнаете про: готовые таблицы в ворде. А какая для этого программа стоит у большинства? Правильно - Microsoft Word.
Вы считает себя экспертом или просто научились набирать 33 буквы на клавиатуре, открывать и сохранять документ? Наш сайт о Microsoft Office Word даст ответ про: как в word убирается нумерация страниц. Работаете по-старинке с 2003 или у вас новейшая версия? Для всех полезной будет информация, которой в достатке на форуме сайта Ворд Эксперт. На портале о Microsoft Office Word вы узнаете про: как выбрать имеил адреса из документа ворд.
На нашем форуме можно прочитать о том, как необычно применить привычные функции, и что есть новенького, с чем вы не сталкивались. На портале о Microsoft Office Word вы узнаете про: серый фон в офиссе 2010. Оригинальные решения, позволяющие экономить время, ответы на вопросы по любой версии. Если хотите заняться программирование, то перечень литературы к вашим услугам. Наш сайт о Microsoft Office Word даст ответ про: excel 2010 вставка объекта pdf. Просто полезных книг на форуме упоминается тоже много.
Кстати, о программировании. Это не такая жуткая вещь, как кажется. На портале о Microsoft Office Word вы узнаете про: поздравление открытка word. Мини-программирование в виде макросов может освоить любой ребенок. На форуме вы найдете, как их описания, так и готовые решения. На портале о Microsoft Office Word вы узнаете про: как порнумеровать страницы в рамке. А кому не охота возиться, оставляйте заявку – зубры помогут. Удачи вам!