Insert "-" at a specific position using VBScript

12,695

Solution 1

This will

  • open a file C:\temp\log.txt,
  • make a global change with a single regexo
  • write the new updated text back over the original file

Please change the path to your file to suit in this line
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

Solution 2

You can't insert characters in a VBScript string, because these are immutable; you'll have to concatenate a new string from Left(sOrgStr, 8) & "-" & Mid( sOrgStr, 9). (The numbers are +-1 depending on how you count.)

Solution 3

you can fix the strings you read using this code:

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

I suggest you'll open your file for input and re-write it into another text file.

Solution 4

You could use regular expressions.

If you're reading the lines 1-by-1 I think you need something like

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 '-'
Share:
12,695
VisualA
Author by

VisualA

Updated on June 04, 2022

Comments

  • VisualA
    VisualA almost 2 years

    I have a file which has multiple lines.

    • It is required to have "-" after 8th position in every line.
    • I can read lines with "-" at 9th position, but I am not able to write "-" at the 9th position if it is not there.

    Any help would be really appreciated.