有没有办法可以找到USER.A
并仅替换后面的6个字符?
目前我正在使用:
Replace(strText, Left("USER.A", 12), "USER.A170510")
结果为USER.A170510170509
(前一天的日期)。
我需要它只是USER.A170510
,而不会消除之前或之后的其余代码。我尝试在旧文本字段和/或新文本字段中使用Left()
和Right()
,但这似乎不起作用。
日期总是需要更改为USER.A之后的当前日期,但脚本可能不会每天都运行,所以我不能只找到前几天的日期并替换它。
以下是完整的脚本:
Const ForReading = 1
Const ForWriting = 2
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\users\userID\desktop\file.ext", ForReading)
strText = objFile.ReadAll
objFile.Close
strNewText = Replace(strText, Left("USER.A", 12), "USER.A170510")
Set objFile = objFSO.OpenTextFile("C:\users\userID\desktop\file.ext", ForWriting)
objFile.WriteLine strNewText
objFile.Close
这个日期最终会成为一个公式,但我还没有完成这个工作。现在我只需要在特定的起始文本后替换字符。
答案 0 :(得分:2)
尝试使用此代替strNewText = Replace(strText, Left("USER.A", 12), "USER.A170510")
Set objRegEx = CreateObject("VBScript.RegExp")
objRegEx.Global = True
objRegEx.IgnoreCase = False
objRegEx.Pattern = "USER\.A[0-9]{6}"
strNewText = objRegEx.Replace(strText, "USER.A170510")
答案 1 :(得分:0)
试试这个:
Const ForReading = 1
Const ForWriting = 2
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\users\userID\desktop\file.ext", ForReading)
strText = objFile.ReadAll
objFile.Close
strFind = "USER.A"
intPos = inStr(1,strText,strFind,1)
If intPos>0 then
strReplaceText = Mid(strText,intPos ,12)
strNewText = Replace(strText, strReplaceText , "USER.A170510")
End If
Set objFile = objFSO.OpenTextFile("C:\users\userID\desktop\file.ext", ForWriting)
objFile.WriteLine strNewText
objFile.Close