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

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

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

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

____________________________

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

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

textual
Листинг программы
Option Explicit
 
Sub Main()
Dim VarByte, SrcFile$, outFile$, n&, sz&, C&, nC&, WRpos&
'Скрипт удаления "C"-го кол-ва символов слева в каждой строке
'текстовых файлов с кодировкой Unicode
C = 1
 
'Настроен на кодировку UCS-2 Little Endian (начальные байты &HFF &HFE)
 
'Исходный файл
SrcFile = "z:\1\Bash\Xinix\1.txt"
'Результирующий (могут совпадать)
outFile = "z:\1\Bash\Xinix\ret.txt"
 
With CreateObject("ADODB.Stream")
    .Type = 1 'adTypeBinary
    .Open
    .LoadFromFile (SrcFile)
    sz = .Size
    VarByte = .Read(sz)
    .Close
    
    'Защита от неизвестного типа кодировки
    If VarByte(0) <> 255 Or VarByte(1) <> 254 Then
        If MsgBox("Кодировка файла отличается. Продолжаем?", vbYesNo) = vbNo Then Exit Sub
    End If
    
    WRpos = 2
    nC = C
    For n = 2 To sz - 1 Step 2
        If nC = 0 Then
            VarByte(WRpos) = VarByte(n)
            VarByte(WRpos + 1) = VarByte(n + 1)
            WRpos = WRpos + 2
          ElseIf VarByte(n) = 13 Then
            VarByte(WRpos) = 13
            VarByte(WRpos + 1) = 0
            VarByte(WRpos + 2) = 10
            VarByte(WRpos + 3) = 0
            WRpos = WRpos + 4
            n = n + 2
            nC = C
          Else
            nC = nC - 1
        End If
        If VarByte(n) = 10 Then nC = C
    Next n
    
    ReDim Preserve VarByte(WRpos - 1)
    .Open
    .Write VarByte
    .SaveTofile outFile, 2 '2 - перезаписать, если существует
    .Close
End With
End Sub

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


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

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

14   голосов , оценка 3.929 из 5
Похожие ответы