Soll ein einzelnes bestimmtes Zeichen aus einem String entfernt werden, verwendet man i.a.R. die Replace-Methode: Dim sText As String sText = "Hallo, wie geht's?" ' Komma (,) aus dem String entfernen sText = Replace(sText, ",", "") Muss man mehrere Zeichen, die sich an beliebiger Stelle befinden, entfernen, müsste man die Replace-Funktion mehrfach aufrufen: Dim sText As String sText = "Hallo, wie geht's?" ' Komma (,) und Fragezeichen (?) aus aus dem String entfernen sText = Replace(sText, ",", "") sText = Replace(sText, "?", "") Will man bspw. alle Satzzeichen aus einem String entfernen, müsste man die Replace-Funktion x-mal aufrufen! Das kostet Zeit, zumal die Replace-Funktion ggf. unnötig aufgerufen wird, falls im String bestimmte Satzzeichen gar nicht vorhanden sind! Dim sText As String sText = "Hallo, wie geht's?" ' alle Satzzeichen entfernen sText = Replace(sText, ",", "") sText = Replace(sText, ".", "") sText = Replace(sText, ";", "") sText = Replace(sText, "!", "") sText = Replace(sText, "?", "") ' usw. Für diese und ähnliche Zwecke sollte gibt es aber auch die "regulären Ausdrücke". Um reguläre Ausdrücke anwenden zu können, müssen Sie dem Projekt einen Verweis auf Microsoft VBScript Regular Expressions 5.x hinzufügen oder Sie verwenden Late-Binding, wie in unserem Tipp. Dim sText As String sText = "Hallo, wie geht's?" ' RegExp via Late-Bindung instanzieren Dim oRegExp As Object Set oRegExp = CreateObject("VBScript.RegExp") With oRegExp .IgnoreCase = True .Global = True .MultiLine = True .Pattern = "[\.,!?;:]" ' alle nicht zulässigen Zeichen ersetzen sText = .Replace(sText, "") End With Set oRegExp = Nothing Die zu ersetzenden Satzzeichen befinden sich hierbei allesamt in der Eigenschaft Pattern nach [\ und vor dem anschließenden ] Zeichen. In obigen Fall werden demnach die Zeichen ".,!?;:" aus dem String entfernt. Um das Ganze ein wenig universeller einsetzbar zu machen, verpacken wir die "Ersetzen-/Löschfunktion" in eine eigene kleine Funktion, bei der sich über einen optionalen Parameter noch ein Zeichen angeben lässt, mit dem die unzulässigen Zeichen ersetzt werden sollen. Standardmäßig wird eine leere Zeichenkette angenommen, so dass die unzulässigen Zeichen aus dem String entfernt werden. ' beliebige Zeichen entfernen / ersetzen Public Function RemoveChars(ByVal Source As String, ByVal Chars As String, _ Optional ByVal ReplaceWith As String = "") As String ' RegExp via Late-Bindung instanzieren Dim oRegExp As Object ' RegExp Set oRegExp = CreateObject("VBScript.RegExp") With oRegExp .IgnoreCase = True .Global = True .MultiLine = True .Pattern = "[\" & Chars & "]" ' alle nicht zulässigen Zeichen ersetzen RemoveChars = .Replace(Source, ReplaceWith) End With Set oRegExp = Nothing End Function Beispiel: Dim sText As String sText = "Hallo, wie geht's?" ' alle Satzzeichen entfernen sText = RemoveChars(sText, ".,!?;:") Dieser Tipp wurde bereits 21.950 mal aufgerufen.
Anzeige
![]() ![]() ![]() (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. |
vb@rchiv CD Vol.6 ![]() ![]() Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats ![]() Matthias Kozlowski Umlaute konvertieren Ersetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) sevZIP40 Pro DLL ![]() Zippen und Unzippen wie die Profis! Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. |
||||||||||||||||
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. |