version=1.0.0
vdate=21.08.2014
fname=udf_substrreplace.bas
ns=%NAMESPACE%
fpath=/vba/functions
====== [VBA] substrReplace() ======
//Diese Funktion ist analog zum PHP-Befehl substr_replace()//
==Version %%version%% (%%vdate%%)==
{{%%ns%%:%%fname%%|Download %%fname%% (V-%%version%%)}}
===== Beispiele =====
'Nach dem 3ten Zeichen alles ersetzen
?substrReplace("AB CD EF", "_uvw_", 3)
AB _uvw_
'Nach dem 3ten Zeichen einfügen
?substrReplace("AB CD EF", "_uvw_",3, 0)
AB _uvw_CD EF
'ab dem 3ten Zeichen 3Zeichen ersetzen
?substrReplace("AB CD EF", "_uvw_",3 ,3)
AB _uvw_EF
'Ab dem 3ten Zeichen von hinten ein Zeichen ersetzen
?substrReplace("AB CD EF", "_uvw_",-3, 1)
AB CD_uvw_EF
'Ab dem 3ten Zeichen bis zum 2t letzten Zeichen ersetzen
?substrReplace("AB CD EF", "_uvw_", 3, -2)
AB _uvw_EF
'Text am Anfang anfügen
?substrReplace("AB CD EF", "_uvw_",0,0)
_uvw_AB CD EF
Und noch ein einfaches Beispiel, wie man diese Funktion für %%RegExp%%-Ersetzungen gut gebrauchen kann
Dim rx As New regExp: rx.Pattern = "\d+": rx.Global = True
Dim txt As String: txt = "9 Hühner und 12 Schweine"
Dim mc As MatchCollection: Set mc = rx.execute(txt)
'von Hinten nach vorne iterieren, damit die Startpunkte (firstIndex) ihre Gültigkeit behalten
Dim i As Integer: For i = mc.count - 1 To 0 Step -1
Dim m As Match: Set m = mc.item(i)
txt = substrReplace(txt, m.value ^ 2, m.firstIndex, m.length)
Next i
Debug.Print txt
'Ausgabe:
'81 Hühner und 144 Schweine
===== Code =====