Вставьте «-» в определенной позиции, используя VBScript - PullRequest
2 голосов
/ 29 декабря 2011

У меня есть файл, который имеет несколько строк.

  • Требуется иметь "-" после 8-й позиции в каждой строке.
  • Я могу прочитать строки с «-» в 9-й позиции, но я не могу написать «-» в 9-й позиции, если ее там нет.

Любая помощь будет очень признательна.

Ответы [ 4 ]

4 голосов
/ 29 декабря 2011

Вы не можете вставлять символы в строку VBScript, потому что они неизменны;вам придется объединить новую строку из Left(sOrgStr, 8) & "-" & Mid( sOrgStr, 9).(Числа + -1 в зависимости от того, как вы считаете.)

3 голосов
/ 30 декабря 2011

Это будет

  • открыть файл C:\temp\log.txt,
  • сделать глобальное изменение с одним регулярным выражением
  • записать новый обновленный текст поверх исходного файла

Пожалуйста, измените путь к вашему файлу в соответствии с этой строкой
StrFileName = "C:\temp\log.txt"

Const ForReading = 1    
Const ForWriting = 2
Dim objFSO
Dim objTF
Dim objRexex
Dim StrFileName
Dim strTxt

StrFileName = "C:\temp\log.txt"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTF = objFSO.OpenTextFile(StrFileName, ForReading)
Set objregex = CreateObject("vbscript.regexp")
strTxt = objTF.ReadAll
objTF.Close
With objregex
    .Global = True
    .MultiLine = True
    .Pattern = "^(.{8})[^-](.*)$"
    strTxt = .Replace(strTxt, "$1" & "-" & "$2")
End With

Set objTF = objFSO.OpenTextFile(StrFileName, ForWriting)
objTF.Write strTxt
objTF.Close
2 голосов
/ 29 декабря 2011

Вы можете исправить строки, которые вы прочитали, используя этот код:

s="input string"
if (mid(s,9,1)<>"-") then 'the 9th character isn't "-"
    s=left(s,8) & "-" & mid(s,9)
end if

Я предлагаю вам открыть свой файл для ввода и перезаписать его в другой текстовый файл.

1 голос
/ 30 декабря 2011

Вы можете использовать регулярные выражения.

Если вы читаете строки 1 на 1, я думаю, вам нужно что-то вроде

Set objRe = New RegExp
' this will match any line having 9 or more characters,
' where the 9-th character is not "-", and capture the first 8 characters in the group #1
objRe.Pattern = "^(.{8})[^-]"

' Open the file, read lines, in the inner loop, call:
line = objRe.Replace( line, "$1-" ) ' This will replace the RE with the group #1 followed by '-'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...