Показать сообщение отдельно
 22.06.2014, 18:53  
По умолчанию Re: Как удалить подстроки в txt или word файле
#4
  Duke_Cheb Duke_Cheb вне форума
  The Scarecrow
 Аватар для Duke_Cheb
Детали профиля (+/-)
Ответов: 5,851
Регистрация: 26.03.2012
Спасибо:1,633/856
Не понравилось:33/2
Репутация: 5587

Накатал быстренько программу макроса, выполняющего эту фигню в MS Word:
Sub Макрос1()
'
' Макрос1 Макрос
'
'
' Открываем документ там, где он валяется на винте
Documents.Open FileName:="e:\primer.docx", ReadOnly:=False

' Активируем его
Dim aDoc As Document
Set aDoc = ActiveDocument


' Создаем два массива типа char: с исходным текстом и с текстом после обработки
' новый текст пока пустой
Dim r, txm
Set r = aDoc.Content
txm = ""


'перебираем все символы исходного текста
For i = 1 To Len(r)

' k - длина предполагаемого куска с #...текст...#
k = 1

' Eсли текущий символ #, ищем следующий знак #
If Mid(r, i, 1) = "#" Then
While Mid(r, i + k, 1) <> "#"


' Eсли # не закрыта второй #, оставляем ее
If i + k > Len(r) Then
GoTo 10
End If
k = k + 1
Wend
k = k + 1


' Tупо пропускаем все символы между ##, включая их самих
i = i + k -1
Else

' Добавляем текущий символ в конец массива txm
10 txm = txm + Mid(r, i, 1)
End If
Next i


' Очищаем весь документ
aDoc.Content.Select
Selection.Delete


' Вписываем в него новое содежимое, накопленное в txm, закрываем файли сохраняем его.
aDoc.Content = txm
aDoc.Save
aDoc.Close (SaveChanges)


End Sub
Исходный файл primer.dox:
#u2f3ceac6b7s# Жил был Вася #u6220a2877es#бухал много #u6220a2877es#...... #u6220a2877es# . Заработал цирроз #и помер # и помер. #Конец истории
Он же, после обработки:
Жил был Вася бухал много ...... . Заработал цирроз и помер. #Конец истории
________________
If you're playing Rock 'n' Roll, play It without lies.
Always be as brave and proud, like an eagle in the sky!
If you want to be remembered, there is one thing you should do:
When you play your music, gotto keep It true
!
© "Majesty"

Последний раз редактировалось Duke_Cheb; 22.06.2014 в 19:10.
  Вверх
Сказал(а) cпасибо
PMR (24.06.2014)