Иногда попадается текст, сформированный в DOS, там же отформатированный. Пример: строки разделены знаком возврата каретки (клавишей Enter), первые строки абзаца реализованы пробелами, ими же текст выравнивается по ширине.
Чтобы получить текст для обработки в Word, можно:
открыть файл в Word как текст DOS;
посчитать количество пробелов, обозначающих абзац. Заменить (в меню "Правка") это количество пробелов на метку - например, ???????? - 8 вопросительных знаков. Заменить все;
заменить все разрывы строк (в Word - ^p) на пробелы. Так мы соединяем строки в абзацы. Получается сплошной абзац;
меняем все ???????? на ^p, т.е. все метки на разрыв абзаца. Так мы получаем разорванные абзацы;
меняем все двойные пробелы на одинарный пробел - несколько раз. Так мы убираем лишние пробелы.
А теперь перепишем этот алгоритм на более подробный, куда и будем добавлять новые хитрости:
открыть файл в Word как текст DOS;
подсчитать приблизительное количество пробелов, выравнивающих по центру заглавия. Заменить их на метку - например, !!!!!!!! - 8 восклицательных знаков. Заменить все. Потом вернемся и попытаемся пройтись по меткам, чтобы сделать их заглавным форматом;
подсчитать количество пробелов, обозначающих абзац. Заменить это количество пробелов на метку - например, ???????? - 8 вопросительных знаков. Заменить все;
заменить все дефисы (-) с разрывом строки (^p) на пустую строку. Мы предполагаем, что это является переносом слова, поэтому соединяем слова, уничтожая переносы. Возможная ошибка - если тире приходится на конец строки.;
заменить все разрывы строк (^p) на пробелы. Так мы соединяем строки в абзацы. Получается сплошной абзац;
меняем все ???????? на ^p, т.е. все метки на разрыв абзаца. Так мы получаем разорванные абзацы;
меняем все двойные пробелы на одинарный пробел - несколько раз. Так мы убираем лишние пробелы.