vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Variablen/Strings   |   VB-Versionen: VB2005, VB200814.04.09
ReplacePlus 2 auf Basis "regulärer Ausdrücke"

Ersetzen ohne Berücksichtigung von Groß- und Kleinschreibung und Ersetzen von Wörtern unter Berücksichtigung von reg. Ausdrücken innerhalb des Such-Strings.

Autor:   Carsten StuplichBewertung:  Views:  9.629 
ohne HomepageSystem:  Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Vor längerer Zeit haben wir Ihnen den Tipp  ReplacePlus auf Basis "regulärer Ausdrücke" (.NET) vorgestellt, bei dem man Zeichenfolgen/Wörter innerhalb eines Strings via regulärer Ausdrücke ersetzen konnte.

Dabei gab es eigentlich immer Probleme, wenn in der zu suchenden Zeichenfolge "OldChar" Zeichen verwendet wurden, die bei Regulären-Zeichen geschützt sind.

Dieses Problem lässt sich umgehen, indem man einfach die Zeichen in den HEX-Wert umwandelt, um den String als "Zeichenkette zu behandeln.

Daher nun noch der Tipp "ReplacePlus 2 auf Basis "regulärer Ausdrücke", bei dem man nun über einen weiteren optionalen Parameter angeben kann, ob der SuchString geschützte reguläre Ausdrücke enthält.

Public Function ReplacePlus(ByVal Text As String, _
  ByVal oldChar As String, ByVal newChar As String, _
  Optional ByVal bIgnoreCase As Boolean = True, _
  Optional ByVal bReplaceOnlyWholeWords As Boolean = False, _
  Optional ByVal bOldCharIsRegularExpression As Boolean = False) As String
 
   Dim tmpOldChar As String = ""
 
  ' Wenn ContainText keine Regulären Ausdrücke enthält, dann
  ' ContainText in ASCI-Codes für REGEX umsetzen, damit z.B. ] 
  ' nicht als Regulärer-Ausdruck interpretiert wird, 
  ' sonstern als Text 
  If bOldCharIsRegularExpression = False Then
    Dim byteArray() As Byte
    Dim hexNumbers As System.Text.StringBuilder = New System.Text.StringBuilder()
 
    byteArray = System.Text.ASCIIEncoding.ASCII.GetBytes(oldChar)
 
    For i As Integer = 0 To byteArray.Length - 1
      hexNumbers.Append("\x" & byteArray(i).ToString("x"))
    Next
    tmpOldChar = hexNumbers.ToString
 
  Else
    tmpOldChar = oldChar
  End If
 
  ' Mit Hilfe dieser Funktion können Sie beim Aufruf von Replace 
  ' in .NET die Groß-Kleinschreibung ignorieren und auch nur ganze 
  ' Worte ersetzen
 
  Dim sPattern As String = ""
 
  ' Falls nur ganze Wörter ersetzt werden sollen
  If bReplaceOnlyWholeWords = True Then sPattern = "\b"
 
  If bIgnoreCase = True Then
    Return New Regex(sPattern & tmpOldChar & sPattern, _
      RegexOptions.IgnoreCase Or _
      RegexOptions.Multiline).Replace(Text, newChar)
  Else
    Return New Regex(sPattern & tmpOldChar & sPattern, _
      RegexOptions.Multiline).Replace(Text, newChar)
  End If
End Function

Beispiele zur Anwendung der Funktion finden Sie hier:
 ReplacePlus auf Basis "regulärer Ausdrücke" (.NET)



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.