Rubrik: Variablen/Strings | VB-Versionen: VB2005, VB2008 | 14.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 Stuplich | Bewertung: | Views: 9.629 |
ohne Homepage | System: 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)