Удаление определённого количества символов каждой строки в текстовом файле - 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