2017-05-11 1 views
0

Gibt es eine Möglichkeit, ich kann USER.A finden und ersetzen nur die 6 Zeichen danach?Wie ersetzt man eine bestimmte Anzahl von Zeichen nach einer Zeichenfolge

Derzeit verwende ich:

Replace(strText, Left("USER.A", 12), "USER.A170510") 

Das Ergebnis ist USER.A170510170509 (der Vortage Datum).

Ich brauche es einfach zu USER.A170510, ohne den Rest des Codes vor oder nach zu beseitigen. Ich habe versucht, Left() und Right() in den alten und/oder neuen Textfelder und das schien nicht zu funktionieren.

Das Datum muss immer auf das aktuelle Datum nach USER.A geändert werden, aber das Skript wird möglicherweise nicht jeden Tag ausgeführt, sodass ich nicht nur das Datum des vorherigen Tages finden und ersetzen kann. Hier

ist das vollständige Skript:

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 

Das Datum wird schließlich eine Formel sein, aber ich habe nicht auf dem Stück noch gearbeitet. Im Moment brauche ich nur die Zeichen nach einem bestimmten Starttext zu ersetzen.

Antwort

2

Try this statt 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

ich den Fehler erhalten: "Falsche Anzahl von Argumenten oder ungültige Eigenschaft" Zuordnung -Code 'objRegEx.Replace': 800A01C2 Folgendes habe ich in dieser Zeile: strNewText = objRegEx.Replace (strText, "USER.A", "USER.A" + tdate) Ich weiß, dass tdate funktioniert, weil es funktioniert, wenn ich es eingestellt habe als: Replace (strText, "USER.A" + pdate, "USER.A" + tdate) pdate ist das vorherige Datum, und tdate ist das heutige Datum Aber das ist ein Workaround. Habe ich etwas falsch in dieser Zeile? –

+0

Versuchen Sie 'objRegEx.Pattern =" USER \ .A [0-9] {6} "' – NMGod

+0

gleicher Fehler 800A01C2. Ich habe versucht, SET vor dem StrNewText, aber das hat nicht funktioniert, per http://www.computerperformance.co.uk/Logon/code/code_800A01C2.htm. Es scheint etwas am Anfang dieser Zeile zu wollen, weil es Char 1 in diesem Fehler referenziert. –

0

Versuchen Sie folgendes:

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 
Verwandte Themen