Удаление определённого количества символов каждой строки в текстовом файле - VB

Узнай цену своей работы

Формулировка задачи:

Добрый вечер Уважаемые Гуру! Задача: Есть txt файл. Нужно удалить определённое количество символов в каждой строке. Пример: txt файл содержит
аваппаапаапавааапв корпорации Стив Баллмер. Новые сообщения [разделы > Компьютерный форум >
Нужно удалить только 6 символов (пробел это тоже символ) каждой строки Получится так:
апаапавааапв ации Стив Баллмер. сообщения [разделы ьютерный форум >

____________________________

Желательно что бы количество символов можно было задать опционально, хоть 128=) П.С, количество строк не известно, в общем что бы скрипт работал до конца файла - до последней строки. Спасибо

Решение задачи: «Удаление определённого количества символов каждой строки в текстовом файле»

textual
Листинг программы
  1. Option Explicit
  2.  
  3. Sub Main()
  4. Dim VarByte, SrcFile$, outFile$, n&, sz&, C&, nC&, WRpos&
  5. 'Скрипт удаления "C"-го кол-ва символов слева в каждой строке
  6. 'текстовых файлов с кодировкой Unicode
  7. C = 1
  8.  
  9. 'Настроен на кодировку UCS-2 Little Endian (начальные байты &HFF &HFE)
  10.  
  11. 'Исходный файл
  12. SrcFile = "z:\1\Bash\Xinix\1.txt"
  13. 'Результирующий (могут совпадать)
  14. outFile = "z:\1\Bash\Xinix\ret.txt"
  15.  
  16. With CreateObject("ADODB.Stream")
  17.     .Type = 1 'adTypeBinary
  18.    .Open
  19.     .LoadFromFile (SrcFile)
  20.     sz = .Size
  21.     VarByte = .Read(sz)
  22.     .Close
  23.    
  24.     'Защита от неизвестного типа кодировки
  25.    If VarByte(0) <> 255 Or VarByte(1) <> 254 Then
  26.         If MsgBox("Кодировка файла отличается. Продолжаем?", vbYesNo) = vbNo Then Exit Sub
  27.     End If
  28.    
  29.     WRpos = 2
  30.     nC = C
  31.     For n = 2 To sz - 1 Step 2
  32.         If nC = 0 Then
  33.             VarByte(WRpos) = VarByte(n)
  34.             VarByte(WRpos + 1) = VarByte(n + 1)
  35.             WRpos = WRpos + 2
  36.           ElseIf VarByte(n) = 13 Then
  37.             VarByte(WRpos) = 13
  38.             VarByte(WRpos + 1) = 0
  39.             VarByte(WRpos + 2) = 10
  40.             VarByte(WRpos + 3) = 0
  41.             WRpos = WRpos + 4
  42.             n = n + 2
  43.             nC = C
  44.           Else
  45.             nC = nC - 1
  46.         End If
  47.         If VarByte(n) = 10 Then nC = C
  48.     Next n
  49.    
  50.     ReDim Preserve VarByte(WRpos - 1)
  51.     .Open
  52.     .Write VarByte
  53.     .SaveTofile outFile, 2 '2 - перезаписать, если существует
  54.    .Close
  55. End With
  56. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы