Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.08.2010, 12:02   #1
Lau
Пользователь
 
Регистрация: 04.08.2010
Сообщений: 28
По умолчанию Работа со строками в блокноте

Здравствуйте.
Есть словарь в формате txt. Термины пишутся с заглавных букв, пояснение к терминам соответственно строчными. Проблема в том что, пояснение термина пишется в несколько строк, а надо чтобы и термин и пояснение были в одну строку.
Например термин, который пишется так:
АВТОМОБИЛЬ (разъяснения)
ДВИГАТЕЛИ (разъяснения)
и т.д.
Ещё интересно, что некоторые предложения в разъяснение тоже начинаются с заглавной буквы.
Вот сам словарь http://webfile.ru/4647381
Возможно ли это сделать в автоматизированном режиме?
Lau вне форума Ответить с цитированием
Старый 05.08.2010, 14:36   #2
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Думаю, что возможно. Но делать это просто так, слишком нудно
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 08.08.2010, 13:29   #3
javvva
Пользователь
 
Аватар для javvva
 
Регистрация: 23.01.2010
Сообщений: 70
По умолчанию

ну и зачем было выкладывать весь файл целиком? выложил бы пару примеров было бы проще. качай теперь. сейчас гляну что можно предложить.
javvva вне форума Ответить с цитированием
Старый 08.08.2010, 14:02   #4
javvva
Пользователь
 
Аватар для javvva
 
Регистрация: 23.01.2010
Сообщений: 70
По умолчанию

могу предложить следующий вариант:
1. открываем файл в ворде.
1.1. ставим галочку отображения не печатаемых символов (чтоб видеть что делаешь)
2. на главной ленте выбираем заменить.
2.1. нажимаем кнопку "больше" в поле "найти" выбираем специальный символ "знак абзаца"
2.2. в поле "заменить" вводим пробел.
2.3. нажимаем "заменить все" и ждем долго долго пока обработается весь файл.
3.1. в поле "найти" ставим три пробела и букву А (прописную)
3.2. в поле "заменить" ставим специальный символ "знак абзаца" и букву А
3.3. ставим галочку в поле "учитывать регистр"
3.4. нажимаем "заменить все" и ждем пока обработается файл.
пункты 3.1.-3.4. проделываем для каждой буквы алфавита.
аналогичным образом убираем лишние пробелы в поле найти ставим два пробела, в поле заменить один. и заменяем до тех пор пока результат замен не станет равным нулю.
затем если нужно ставим отступы и сохраняем файл как простой текст.
javvva вне форума Ответить с цитированием
Старый 08.08.2010, 14:12   #5
CyberMen
Заблокирован
 
Регистрация: 08.08.2010
Сообщений: 41
По умолчанию

Lau
а какие есть предложения, как это сделать?
Я вижу решение полуавтоматическое.
Выделять термин и его описание и с помощью "Найти и заменить" менять знак абзаца и 2 пробела на пробел.
Или пройтись по всему документу и удалить вручную 2 пробела перед терминами, а затем по всему документу произвести вышеописанную замену.
javvva
А если с большой буквы будет начинаться не термин, а просто слово?

Последний раз редактировалось CyberMen; 08.08.2010 в 14:18.
CyberMen вне форума Ответить с цитированием
Старый 08.08.2010, 14:28   #6
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Я бы делал регулярными выражениями. Прочитал бы текстовый файл в переменную, а затем искал бы слова, стоящие в начале строк и состоящие из заглавных букв. Всё, что находится между такими словами, является статьёй. В статье заменяем разрывы строк на пробелы. Это формальный подход, но, скорее всего, потребуются ещё действия для унификации содержимого: отсечение частей файла, не несущих информации и т.п.
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 08.08.2010, 14:41   #7
CyberMen
Заблокирован
 
Регистрация: 08.08.2010
Сообщений: 41
По умолчанию

javvva
хотя я сейчас подумал, ничего страшного не случится, если какое-то слово с большой буквы будет стоять в начале строки. Таких ситуаций будет мало, они будут бросаться в глаза и это затем можно исправить вручную.
В развитие идеи.
Ставим галочку "Постановочные знаки"
В поле "Найти" копируем и вставляем вот это:
(^0013)( )([А-Я])
В поле "Заменить"
\1\3
Затем по всему документу произвести замену знака абзаца и двух пробелов на один пробел.

Последний раз редактировалось CyberMen; 08.08.2010 в 14:54.
CyberMen вне форума Ответить с цитированием
Старый 08.08.2010, 16:23   #8
javvva
Пользователь
 
Аватар для javvva
 
Регистрация: 23.01.2010
Сообщений: 70
По умолчанию

Цитата:
Сообщение от CyberMen Посмотреть сообщение
javvva
А если с большой буквы будет начинаться не термин, а просто слово?
вероятность того, что слова будут начинаться с одной и той-же буквы крайне мала. так что этот метод вполне приемлем. особенно для тех, кто не знаком с программированием.
javvva вне форума Ответить с цитированием
Старый 09.08.2010, 06:36   #9
garik64
Форумчанин
 
Регистрация: 09.07.2009
Сообщений: 111
По умолчанию

1) Ищем аббревиатуры из списка сокращений и меняем их на курсив

2) Убиваем пробелы в начале строк: ^p^w на ^p

3) Ищем слово в начале абзаца, состоящее из больших букв: ^13<[А-ЯЁ]@> (с подстановочными знаками), не курсивное. Меняем на сочетание ###^&

4) Меняем все ^p на пробел

5) Меняем ### на ^p

6) Курсив меняем обратно на некурсив.

7) Всё это полдела, так как многие слова в словаре с переносами, которые дают в тексте тире.

ЕСЛИ словарь экспортирован из вордовского файла, его надо экспортировать ещё раз, предварительно запретив расстановку переносов. Если, что более вероятно, он изначально в txt - выход один. Между пунктами 3) и 4) искать сочетание "-^p" и заменять на "ничего", вручную разрешая заменить или пропуская слово. Это позволит убрать тире-переносы в словах типа "не-посредственный" и оставить в "тонно-километрах" и т.п.

Последний раз редактировалось garik64; 09.08.2010 в 06:58. Причина: Чуть-чуть подумал
garik64 вне форума Ответить с цитированием
Старый 10.08.2010, 09:03   #10
garik64
Форумчанин
 
Регистрация: 09.07.2009
Сообщений: 111
Смущение

Ещё немного подумал. Между пунктами 2) и 3) надо сделать вот что:

Найти сочетание (^13)(<[А-ЯЁ]>^32) с подстановочными знаками и заменить найденное на " \2". То есть найти случай, когда предложение после знака абзаца начинается с "И", "А", "В", "О" и заменить абзац пробелом. Если этого не сделать, фраза отделится абзацем, как отдельная статья.

Последний раз редактировалось garik64; 10.08.2010 в 09:14. Причина: блин, руки торопятся!
garik64 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со строками gani84 Помощь студентам 1 30.03.2010 17:39
работа со строками DeDoK Общие вопросы Delphi 2 02.02.2010 23:27
работа со строками в с++ Ferghost Помощь студентам 0 05.06.2009 01:40
Работа со строками. tae1980 Microsoft Office Excel 2 18.04.2009 16:38