|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
27.03.2009, 22:30 | #1 |
Пользователь
Регистрация: 09.03.2009
Сообщений: 13
|
корректура тхт
Вот фрагмент корректуры тхт файла, не очень четко проходит замена одной группы символов на другую... может чего сможете пояснить, спасибо.
Function Repl(Stroka As String, WordStart As String, WordFinish As String) As String Dim Score As Integer Score = 1 While Score <> 0 Score = InStr(Score, Stroka, WordStart, 1) If Score <> 0 Then Stroka = Mid(Stroka, 1, Score - 1) + WordFinish + Mid(Stroka, Score + Len(WordStart), Len(Stroka) - Score - Len(WordStart) + 1) Score = Score + Len(WordFinish) End If Wend Repl = Stroka End Function Sub корректир() Dim Stroka As String Dim WordStart As String Dim WordFinish As String Dim I As Long Dim J As Long Dim K As Long Dim NumberString As Long Dim Data() As String 'Подсчет количества строк Open "C:\Documents and Settings\John\Рабочий стол\Чистка\Техт.txt" For Input As #1 NumberString = 0 Do While Not EOF(1) Line Input #1, Stroka NumberString = NumberString + 1 Loop Close #1 ReDim Data(1 To NumberString) 'Считывание строк Open "C:\Documents and Settings\John\Рабочий стол\Чистка\Техт.txt" For Input As #2 NumberString = 0 Do While Not EOF(2) Line Input #2, Stroka NumberString = NumberString + 1 Data(NumberString) = Stroka Loop Close #2 'Удаление пробелов в начале и конце For I = 1 To NumberString Data(I) = LTrim(RTrim(Data(I))) Next I '********************************** *********************************** ********************* For I = 1 To NumberString 'Удаление лишних пробелов For J = 1 To 10 WordStart = " " WordFinish = " " Data(I) = Repl(Data(I), WordStart, WordFinish) Next J 'Удаление пробелов перед запятыми WordStart = " ," WordFinish = "," Data(I) = Repl(Data(I), WordStart, WordFinish) 'Пробелы окружающие дефис WordStart = " -" WordFinish = "-" Data(I) = Repl(Data(I), WordStart, WordFinish) WordStart = "- " WordFinish = "-" Data(I) = Repl(Data(I), WordStart, WordFinish) 'Пробелы окружающие плюс WordStart = " +" WordFinish = "+" Data(I) = Repl(Data(I), WordStart, WordFinish) WordStart = "+ " WordFinish = "+" Data(I) = Repl(Data(I), WordStart, WordFinish).... буду очень признателен. icq 479 991 875 old-man46@yandex.ru
Пусть Вас преследует удача!
|
27.03.2009, 23:16 | #2 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
Вот так намного проще и быстрее:
Код:
|
27.03.2009, 23:21 | #3 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
Или даже так: (без лишних функций)
Код:
Код:
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
Макросы любой сложности на заказ. Мониторинг цен конкурентов Последний раз редактировалось EducatedFool; 28.03.2009 в 01:30. |
28.03.2009, 01:28 | #4 |
Особый статус
Участник клуба
Регистрация: 24.11.2008
Сообщений: 1,535
|
Это изящно, да. Но в сканированных текстах и три пробела не редкость!
Как говорится, добавлено через 7 минут. Хорошо! Я всё понял. Интерпретатор бэйсик всё ж не в башке!
Формула 1 (календарь чемпионата-2016): 26.11.2016 15:55 — Абу-Даби: http://ru.wikipedia.org/wiki/Гран-при_Абу-Даби — (квалификация)! Эфир: http://lion-tv.com/28-match-tv.html
Последний раз редактировалось Sasha_Smirnov; 28.03.2009 в 01:36. |
28.03.2009, 06:39 | #5 |
Пользователь
Регистрация: 09.03.2009
Сообщений: 13
|
Спасибо большое, еще не разбирал, но опыта, вижу у меня маловато, думаю сегодня разобраться, вообще то хотел переделать: исходные данные на корректуру вбиты в "тело", взялся заготовить таблицу из двух столбцов в Excel (у меня все макросы в ем, довольно громоздкий оперативный учет в редакции), бросить жалко и переписать хотя бы в акцесс - вроде работет неплохо
исходная табл для оператора 1. исх.симв. конеч.симв 2. исх.симв. конеч.симв 3. исх.симв. конеч.симв и т.д. пары до разумного предела (300 -400) эту таблицу должен сопровождать оператор, нажал кнопку и порядок Сейчас прога (в теле исходные) вроде работает, но неустойчиво, да и без конца появляются новые варианты корректуры, кое какие замены не делает... думаю, когда это все в массив загнать, то потребуется все таки функция, для обработки каждой сравниваемой пары... для пояснения еще фрагмент ...WordStart = ", В/О" WordFinish = ", в/о" Data(I) = Repl(Data(I), WordStart, WordFinish) WordStart = ", в/О" WordFinish = ", в/о" Data(I) = Repl(Data(I), WordStart, WordFinish) WordStart = ". в/о" WordFinish = ". В/о" Data(I) = Repl(Data(I), WordStart, WordFinish) WordStart = ". В/О" WordFinish = ". В/о" Data(I) = Repl(Data(I), WordStart, WordFinish) WordStart = ". в/О" WordFinish = ". В/о" Data(I) = Repl(Data(I), WordStart, WordFinish) верх в таблице 'Время WordStart = "с 1-00" WordFinish = "с 1:00" Data(I) = Repl(Data(I), WordStart, WordFinish) WordStart = "с 2-00" WordFinish = "с 2:00" Data(I) = Repl(Data(I), WordStart, WordFinish) WordStart = "с 3-00" WordFinish = "с 3:00" Data(I) = Repl(Data(I), WordStart, WordFinish) WordStart = "с 4-00" WordFinish = "с 4:00" Data(I) = Repl(Data(I), WordStart, WordFinish) WordStart = "с 5-00" WordFinish = "с 5:00" Data(I) = Repl(Data(I), WordStart, WordFinish) WordStart = "с 6-00" WordFinish = "с 6:00" Data(I) = Repl(Data(I), WordStart, WordFinish) WordStart = "с 7-00" WordFinish = "с 7:00" Data(I) = Repl(Data(I), WordStart, WordFinish) WordStart = "с 8-00" WordFinish = "с 8:00" Data(I) = Repl(Data(I), WordStart, WordFinish) WordStart = "с 9-00" WordFinish = "с 9:00" Data(I) = Repl(Data(I), WordStart, WordFinish) WordStart = "с 10-00" WordFinish = "с 10:00" Data(I) = Repl(Data(I), WordStart, WordFinish)... фрагмент исходного текста -- Общепит -- Официант Опыт работы от 1 года. Приятная внешность. З/п от 7000 руб. Тел.299-36-94, 299-36-91 e-mail:salar2006@yandex.ru,КА «Салар» Повар Ресторан.Возраст до 40 лет Опыт работы от 3 лет.Оплата высокая. Тел.299 -36-94, 299- 36-91 e-mail:salar2006@yandex.ru, КА «Салар» Технолог пищевого производства Мясо, рыба. Работа в Коченёво. З/п 15000 руб. Тел.299-36-94, 299-36-91 e-mail:salar2006@yandex.ru, КА «Салар» -- Офисные работники -- Методист В компанию по автоматизации бизнес-процессов, продаже программного обеспечения требуется м/ж, возраст от 23 лет, в/о. Широкий спектр знаний в области информационных технологий и общих принципов учета. Опыт работы с технической документацией (составление, анализ). Опыт работы с пользователями. Компания предлагает: официальное трудоустройство, полный социальный пакет, достойную оплату труда. Готовность к командировкам (вахтам). Готовность к большим объемам работ. Умение работать в команде, неконфликтность. Тел.344-46-66, 344-45-88, 344-43-00, e-mail: ka-forum@ngs.ru, сайт:www.forum.jobnsk.ru, ул.Петропавловская, 17. КА"ФОРУМ" ОФИС-МЕНЕДЖЕР (С ФУНКЦИЯМИ КАССИРА) В крупную стабильную компанию, занимающуюся продажами и монтажом пластиковых окон. Женщина, возраст 20-35 лет, образование не ниже среднеспециального (бухгалтер, кассир), желателен опыт работы офис-менеджером, кассиром. Функции: оформление документов при заключении договора, ведение внутренней документации, работа с ККМ. Пользователь ПК (Excel, Word), внимательность, усидчивость, доброжелательность. З/п 6000-16000 руб. Офис находится на пл. Калинина. Контактное лицо: Горбачева Виктория. Тел.29-15-603, 29-07-720, 21-88-619, e-mail: StroyPersona@ngs.ru www.StroyPersona.com КА "СтройПерсона" -- Охрана -- Охранники лицензированные Работа вахтовым методом. Сургут, Белово. З/п от 15000 руб. Проезд за счет фирмы. тел.299-36-94, 299-36-91 e-mail:salar2006@yandex.ru, КА «Салар» Охранники лицензированные и без лицензии Возраст 21-50 лет. По городу. С последующим лицензированием. З/п от 8500 руб. Тел.299-36-94, 299-36-91 e-mail:salar2006@yandex.ru, КА «Салар» Сотрудник службы безопасности Мужчина, возраст 30-40 лет, в\о. Опыт работы в милиции не менее 6 лет. Функции: контроль за сотрудниками, проверка сотрудников, сопровождение груза, слежение
Пусть Вас преследует удача!
Последний раз редактировалось Old_Man_nsk; 28.03.2009 в 07:17. |
28.03.2009, 12:20 | #6 | ||
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
Цитата:
Кроме того, я предложил замену для вашей функции Repl - функцию ReplaceAll: Код:
Цитата:
Я, конечно, могу переделать код так, чтобы обеспечивалась необходимая функциональность, и при этом не терялась гибкость (чтобы макрос легко можно было подправить при изменении правил корректуры), но если Вы и впредь будете скидывать по кусочку кода, мне это очень скоро надоест. Сразу бы прикрепили весь код - уже получили бы готовый макрос. (код у вас большой, так что прикрепляйте его в виде текстового файла) В моём макросе код Код:
Код:
Аналогично вот этот код: Код:
Вот весь макрос: Код:
|
||
28.03.2009, 12:37 | #7 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
Цитата:
Предложенный мной в предыдущем посте вариант с txt = Replace(txt, "-00", ":00") будет некорректно работать с номерами телефонов, но, тем не менее, это ещё не повод использовать конструкцию вроде этой: Код:
исх.симв., конеч.симв, исх.маска, конеч.маска По первым 2-м столбцам будут происходить замены вроде ", В/О" -> ", в/о" а при помощи масок (в 3-м и 4-м столбцах) - замены типа "с 9-00" -> "с 9:00" с использованием маски "с ##-##" -> "с ##:##" Прикрепите к сообщению файл excel с исходным кодом макроса. Посмотрим, как это можно оптимизировать. |
|
28.03.2009, 13:54 | #8 | |
Пользователь
Регистрация: 09.03.2009
Сообщений: 13
|
Цитата:
Пусть Вас преследует удача!
Последний раз редактировалось Old_Man_nsk; 28.03.2009 в 14:01. |
|
01.04.2009, 12:45 | #9 |
Пользователь
Регистрация: 09.03.2009
Сообщений: 13
|
повисла моя оптимизация, однако...
Пусть Вас преследует удача!
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с каталогом тхт файлов. | littlecoder | Общие вопросы Delphi | 4 | 17.12.2008 22:47 |
Черпаем из ТХТ | littlecoder | Общие вопросы Delphi | 1 | 15.12.2008 22:34 |
Запись файлов в *.тхт с учетом повторяющихся значений | Arteom | Общие вопросы Delphi | 3 | 03.04.2008 17:26 |
разбить ячейку и ивписать тхт | Axe_L | Помощь студентам | 2 | 22.10.2007 14:50 |