User Tools

Site Tools


vba:functions:substrreplace

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
vba:functions:substrreplace [21.08.2014 16:48:45]
yaslaw [Beispiele]
vba:functions:substrreplace [29.04.2015 11:08:08] (current)
yaslaw
Line 1: Line 1:
 +<​const>​
 +    version=1.0.0
 +    vdate=21.08.2014
 +    fname=udf_substrreplace.bas
 +    ns=%NAMESPACE% ​   ​
 +    fpath=/​vba/​functions
 +</​const>​
 ====== [VBA] substrReplace() ====== ====== [VBA] substrReplace() ======
-Diese Funktion ist analog zum PHP-Befehl substr_replace()+//Diese Funktion ist analog zum PHP-Befehl substr_replace()//
  
-{{:vba:​functions:​udf_substrreplace.bas|Download ​udf_substrreplace.bas}}+==Version %%version%% (%%vdate%%)== 
 +{{%%ns%%:%%fname%%|Download ​%%fname%% (V-%%version%%)}}
  
 ===== Beispiele ===== ===== Beispiele =====
Line 30: Line 38:
 </​code>​ </​code>​
  
-===== Code ===== +Und noch ein einfaches Beispiel, wie man diese Funktion für %%RegExp%%-Ersetzungen gut gebrauchen kann 
-<code vb udf_substrReplace.bas> +<code vb>Dim rx As New regExp: ​  rx.Pattern ​= "\d+": ​rx.Global = True 
-Attribute VB_Name ​= "udf_substrReplace" +Dim txt As String:      ​txt = "9 Hühner und 12 Schweine"​
-'​------------------------------------------------------------------------------- +
-'​File ​        udf_substrReplace.bas +
-' ​              ​Copyright mpl by ERB software +
-' ​              All rights reserved +
-' ​              http://​wiki.yaslaw.info/​dokuwiki/​doku.php/​vba/​functions/​substrReplace +
-'​Environment ​ : VBA 2010 + +
-'​Version ​     : 1.0.0 +
-'​Name ​        : substrReplace +
-'​Author ​      : Stefan Erb (ERS) +
-'​History ​     : 21.08.2014 - ERS - Creation +
-'​------------------------------------------------------------------------------- +
-Option Explicit+
  
-'​Analog zu substr_replace aus PHP +Dim mc As MatchCollection: ​ Set mc = rx.execute(txt) 
-'​iString +'von Hinten nach vorne iterierendamit die Startpunkte (firstIndex) ihre Gültigkeit behalten 
-'Die Eingabezeichenkette+Dim i As Integer: For i = mc.count - 1 To 0 Step -1 
-' +    Dim m As Match: Set m = mc.item(i
-'​iReplacement +    txt = substrReplace(txtm.value ^ 2m.firstIndex,​ m.length) 
-'Die Ersetzungszeichenkette +Next i 
-+Debug.Print txt
-'​iStart +
-'Ist start positivbeginnt ​die Ersetzung ab der im Offset-Parameter start definierten Stelle innerhalb von string . +
-'Ist start negativ, wird vom Ende der Zeichenkette string bis zum Wert von start rückwärts gezählt und dort mit dem Austausch begonnen+
-+
-'​iLength +
-'Ist der Parameter angegeben und positiv, stellt dieser Parameter die Länge des auszuwechselnden Teils von string darIst der Wert negativ, gibt er die Zeichenzahl an, um die ab Ende von +
-'​string rückwärts gezählt wird. Bis zu dieser Stelle erfolgt dann der Austausch. Ist der Parameter nicht angegeben, wird standardmäßig eine Ersetzung bis zum Ende des Strings ​(strlen(string )+
-'​durchgeführtdas heißtdie Ersetzung endet mit dem Ende von string ​Sollte ​length ​den Wert null haben, wird die Funktion die Zeichenkette replacement in string an der durch start +
-'​bezeichneten Stelle einfügen.+
  
-'/** +'Ausgabe: 
-' ​* Ersetzt Text innerhalb einer Zeichenkette +'81 Hühner und 144 Schweine<​/code> 
-' * @param ​ String ​     Die Eingabezeichenkette +===== Code ===== 
-' * @param ​ String ​     Die Ersetzungszeichenkette +<​source ​'%%fpath%%/%%fname%%' ​vb>
-' * @param ​ Integer ​    ​Start +
-' * @param ​ Integer ​    ​Länge +
-' * @return String +
-' *+
-Public Function substrReplace(ByVal iString As String, ByVal iReplacement As String, ByVal iStart As Integer, Optional ByVal iLength As Variant ​Null) As String +
-    Dim startP As Integer: ​ startP ​IIf(Sgn(iStart) >0, iStart, greatest(Len(iString) + iStart, 1)) +
-    Dim length As Integer: ​ length ​Nz(iLength, Len(iString) - iStart) +
-    Dim endP   As Integer +
-     +
-    Select Case Sgn(length) +
-        Case 1:     ​endP ​least(startP + length, Len(iString)) +
-        Case 0:     ​endP ​startP +
-        Case -1:    endP greatest(Len(iString) + length, startP) +
-    End Select +
-     +
-    substrReplace ​Left(iString,​ startP) & iReplacement & Mid(iString,​ endP + 1) +
-     +
-End Function +
- +
-'​------------------------------------------------------------------------------- +
-' -- Private Libraries +
-'​------------------------------------------------------------------------------- +
- +
-'/** +
-' * Copyright mpl by ERB software | http://​wiki.yaslaw.info +
-' * +
-' * Gibt den Grössten aus einer unbestimmten Menge von Werten zurück +
-' * @param ​ Keine Objekte +
-' * @return Grösster Wert +
-' * @example greatest("​Hallo Welt", 42, "​Mister-X"​) -> Mister-X +
-'*/ +
-Private Function greatest(ParamArray iItems() As Variant) As Variant +
-    greatest ​iItems(UBound(iItems)) +
-    Dim item As Variant: For Each item In iItems +
-        If Nz(item) > Nz(greatest) Then greatest ​item +
-    Next item +
-End Function +
- +
-'/** +
-' ​* Gibt den Kleinsten aus einer unbestimmten Menge von Werten zurück +
-' * @param ​ Keine Objekte +
-' * @return Grösster Wert +
-' * @example least("​Hallo Welt", 42, "​Mister-X"​) -> 42 +
-'*/ +
-Private Function least(ParamArray iItems() As Variant) As Variant +
-    least = iItems(LBound(iItems)) +
-    Dim item As Variant: For Each item In iItems +
-        If Nz(item) < Nz(least) Then least = item +
-    Next item +
-End Function +
-</code>+
vba/functions/substrreplace.1408632525.txt.gz · Last modified: 21.08.2014 16:48:45 by yaslaw