如何在字符串

时间:2017-05-11 02:44:44

标签: replace vbscript

有没有办法可以找到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

这个日期最终会成为一个公式,但我还没有完成这个工作。现在我只需要在特定的起始文本后替换字符。

2 个答案:

答案 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