vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2017
 
zurück
Rubrik: Variablen/Strings · String-Operationen   |   VB-Versionen: VB6, VBA03.08.15
Beliebige Zeichen aus einem String entfernen

Mit Hilfe von regulären Ausdrücken lassen sich aus einem String beliebige Zeichen in einem Rutsch entfernen.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  2.701 
www.tools4vb.deSystem:  WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

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 2.701 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


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.
 
   

Druckansicht Druckansicht Copyright ©2000-2017 vb@rchiv Dieter Otter
Alle 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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel