Benutzer-Werkzeuge

Webseiten-Werkzeuge


k19:k19.6:k19.6.3:start

19.6.3 Exkurs LIKE

Das Thema „Operator LIKE“ aus dem → Kapitel 8.8 wird hier unter dem Anwendungsaspekt wieder aufgegriffen. Es gilt:

bErgebnis = String [NOT] LIKE Muster

und die boolsche Variable bErgebnis erhält den Wert TRUE, wenn die Muster-Zeichenkette auf String passt. Wird NOT verwendet, dann wird der Test invertiert. Es können die folgenden Muster verwendet werden:

MusterBeschreibung: Passt genau auf … oder ist Platzhalter für genau …
* eine Anzahl von beliebigen Zeichen
? ein einzelnes Zeichen
[abc] ein Zeichen aus der Zeichen-Menge
[x-y] ein Zeichen aus dem vorgegebenen Bereich
[^x-y] jedes Zeichen, das nicht im Bereich ist; ^ ist hier das Negationszeichen – nicht !
space jede Anzahl von Zeichen mit einem ASCII-Code kleiner als 32
{aaa,bbb,…} eines der 'Worte' in der durch Komma getrennten Liste

Tabelle 19.6.3.1: Muster für LIKE

Beispiel 1
In einem Datei-Öffnen-Dialog kann man ein eigenes Datei-Filter einsetzen. Dabei wird für Bilddateien oft ein Filter der folgenden Art verwendet:

Dialog.Filter = [„*.png;*.jpg“, „Picture files“, „*.svg;*.wmf“, „Drawing files“]

Mit regulären Ausdrücken können Sie jedoch die Filter wesentlich differenzierter setzen:

Dialog.Title = "Importieren Sie eine Tabellen-Text-Datei!"
Dialog.Filter = ["tb*.txt", "Text-Dateien"] ' Datei beginnt mit tb
Dialog.Filter = ["[0-9]*.txt", "Text-Dateien"] ' Datei beginnt mit einer Ziffer
Dialog.Filter = ["tb[1-3]*.txt; ta[1-3]*.log", "Text-Dateien"]

Mit dem letzten Filter werden alle Dateien im aktuellen Verzeichnis selektiert, die mit der Buchstabenfolge 'tb' beginnen, der eine Ziffer aus dem Bereich von 1-3 folgt und dann eine Folge von beliebigen Zeichen. Die Extension ist entweder .txt oder .log.

Die folgende Filter-Definition ergibt mit Gambas 3.4.0 einen Fehler (FileView.CheckFilter.127: Bad regular expression:), weil nach Definition immer nur ein Filter gesetzt werden kann:

Dialog.Filter = ["tb[1-3]*.{txt,log}", "Text-Dateien"]

Beispiel 2
Seitennamen filtern Sie zum Beispiel so:

FOR EACH sLine IN Split(sCont, "\n") 
    IF sLine LIKE "/wiki/" & CGI.Encode(Name2Wiki(TextBox2.Text)) & "*" THEN 
       aUrls.Add(sLine) 
    ENDIF 
NEXT ' sLine 

Für ein starkes Passwort könnte die Forderung nach jeweils mindestens einer Ziffer, einem kleinen Buchstaben, einem Großbuchstaben und einem ausgewählten Sonderzeichen mit dieser Funktion geprüft werden und der Funktionswert für eine differenzierte Fehleranalyse genutzt werden:

Private Function CheckStrongPassword(sPassword As String) As Integer
 
  If sPassword NOT LIKE "*[a-z]*" Then Return 1
  If sPassword NOT LIKE "*[A-Z]*" Then Return 2
  If sPassword NOT LIKE "*[0-9]*" Then Return 3
  If sPassword NOT LIKE "*[+#%]*" Then Return 4 ' Zeichenmenge {+ # %}
  If Len(sPassword) < 8 Then Return 5
 
  Return 0 ' Das Password ist ein starkes Password
 
End ' Function CheckStrongPassword(..)

Beispiel 3
Unter der Annahme, dass die Variable sDevice den aktuellen Wert 'dev/ttyUSB2' hat, passt kein Element aus der Muster-Menge.

If sDevice LIKE "dev/ttyUS{B0,B1}" Then ...

Download

Artikel

Download

k19/k19.6/k19.6.3/start.txt · Zuletzt geändert: 20.06.2016 (Externe Bearbeitung)

Seiten-Werkzeuge