|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
06.12.2009, 16:14 | #1 |
Пользователь
Регистрация: 04.10.2008
Сообщений: 16
|
Ошибки в прямой речи
Здравствуйте, уважаемые форумчане!
У меня имеется художественный текст (OCR) со множеством прямой речи. Перед распечаткой стараюсь довести его до нормального состояния. Проблема — есть ошибки типа: - Я сделаю. - Сказал он. Надо: - Я сделаю, - сказал он. Вариант проверки: Ищем абзацы с ошибкой (^0013^=^s[!^0013^=]@)([.\!\?^0133])(^s^=^0032)([A-ZА-ЯЁё])Визуально проверяю, есть ли ошибка. Если есть: • стрелка вправо (снимаем выделение), Shift+стрелка влево — выделяем искомую букву, Shift+F3 заменяем строчную прописной; Если после прямой речи должна быть запятая, продолжаем: • делаем 4 шага влево (чтобы добраться до точки), Backspase (удаляем символ слева — точку), вставляем запятую. Окно поиска можно убрать и продолжать поиск с помощью Ctrl+PgDn Записать последовательность действий я могу, но Вопрос, как можно сделать подтверждение действия №1? Как сделать подтверждение действия №2? Возможно просто разбить на два макроса. Или вырезать в буфер знак препинания, проверить программно, и если это точка (не !.. или ?.. хотя это можно позже поправить), заменить на запятую. Затем вставить обратно. Ну или просто дайте хороший совет, как решить (Может быть можно, всё-таки, менять регистр через «Поиск и замену»? :-) К сожалению, не могу вставить картинку с образцом |
06.12.2009, 22:11 | #2 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
Прикрепите к сообщению файл Word (предварительно упаковав его в архив, если файл велик по размеру) - так Вы дождетесь помощи гораздо быстрее. |
|
06.12.2009, 22:30 | #3 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
Почему такое сложное выражение для поиска? У меня получается найти таким выражением:
(- *)([\!\?.])( - [A-ZА-ЯЁ]) Что стоит вначале прямой речи? Согласно правил вёрстки, там должно стоять длинное тире (—) и неразрывный пробел. Что стоит после знака препинания, отделяющего прямую речь? Там должен стоять неразрывный пробел и длинное тире Поиском и заменой можно заменить знак препинания на запятую, но регистр изменить не получится. Придётся писать макрос. Он будет несложный. Но для начала нужно определиться с поисковым выражением.
Лучше день потерять — потом за пять минут долететь!©
|
06.12.2009, 23:18 | #4 | |
Особый статус
Участник клуба
Регистрация: 24.11.2008
Сообщений: 1,535
|
Это?
Цитата:
Код:
Код:
Формула 1 (календарь чемпионата-2016): 26.11.2016 15:55 — Абу-Даби: http://ru.wikipedia.org/wiki/Гран-при_Абу-Даби — (квалификация)! Эфир: http://lion-tv.com/28-match-tv.html
Последний раз редактировалось Sasha_Smirnov; 07.12.2009 в 11:56. Причина: тестдрайв. |
|
07.12.2009, 20:46 | #5 |
Пользователь
Регистрация: 04.10.2008
Сообщений: 16
|
Всё-таки картинка объяснила бы (я так думаю), что я хочу (для EducatedFool) и почему такая сложная формула (для viter.alex) — она ищет до второго среднего тире внутри абзаца, в общем, то что мне надо в данном конкретном тексте. Но вопрос был немного в другом: нужен код для возможности выбора.
За него отдельное спасибо Sasha_Smirnov и за найденную ошибку. Пойду разбираться с кодом, потому что элементарные для вас вещи для меня — тёмный лес. Кстати, не в обиду, согласно требует дательного падежа. |
07.12.2009, 22:04 | #6 |
Пользователь
Регистрация: 04.10.2008
Сообщений: 16
|
Для Sasha_Smirnov.
Попробовал ваш макрос. Сработал он только с моим выражением поиска (ну это и понятно, я-то видел свой текст ). Но сработал наполовину — после подтверждения меняет регистр всего слова, а не его первой буквы. Т.е. «Слово» на «сЛОВО». И ещё вопрос, можно ли как-то прервать работу макроса, а то до конца текста не отпускает (и крестик диалогового окна [X] — серый)? Спасибо за помощь. |
07.12.2009, 23:02 | #7 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
Замените цикл Do…Loop на такой:
Код:
Лучше день потерять — потом за пять минут долететь!©
|
08.12.2009, 01:35 | #8 |
Пользователь
Регистрация: 04.10.2008
Сообщений: 16
|
Для viter.alex.
Макрос работает как надо. Но теперь выбрасывает каждый раз после нажатия «Да». И ещё — «для повышения образованности» — поясните, пожалуйста, для чего проверяется Len(Selection.Text) > 100? Это ведь длина выделенного текста? |
08.12.2009, 06:19 | #9 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
А я не знаю для чего. Это же Sasha_Smirnov придумал
Я понял почему выбрасывает: нужно сжимать выделение после каждого поиска, чтобы можно было искать в оставшемся документе: Код:
Лучше день потерять — потом за пять минут долететь!©
|
08.12.2009, 12:27 | #10 | |
Особый статус
Участник клуба
Регистрация: 24.11.2008
Сообщений: 1,535
|
Цитата:
Добавить кнопку отмены (выхода из программы). Что и сделал viter.alex! Порадовал, однако. P/s. Тёмный лес Word и для меня. Но есть макрос типа «Правлю всё!», 4 месяца отлаживал!..
Формула 1 (календарь чемпионата-2016): 26.11.2016 15:55 — Абу-Даби: http://ru.wikipedia.org/wiki/Гран-при_Абу-Даби — (квалификация)! Эфир: http://lion-tv.com/28-match-tv.html
Последний раз редактировалось Sasha_Smirnov; 09.12.2009 в 03:03. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Программа распознавания русской речи - Комбат | denis47 | Помощь студентам | 10 | 25.06.2016 22:39 |
Синтез речи. Создание голосового движка (не русского). | Gauss | Общие вопросы Delphi | 2 | 21.01.2014 10:12 |
как определить часть речи в VBA? | Izhic | Microsoft Office Word | 4 | 11.06.2009 13:53 |
[Delphi] Выделение частей речи в тексте | vince | Помощь студентам | 8 | 07.12.2008 23:37 |
Программа для разпознавания речи | Иллидан | Софт | 3 | 25.03.2008 20:37 |