EPROG-LU - Aufgabe 3138 (Wildcards)
3138 Wildcard Wildcards
Kategorie:String
Klasse:mittel
Eingabe:siehe Spezifikation
Ausgabe:siehe Spezifikation
Abzugebende Files: Wildcard.txt, Wildcard.java, *.java , 10120.txt, 9987.txt

Kurzbeschreibung:

Ein String wird mit einem Suchbegriff verglichen.

Allgemeine Hinweise:

Aufgabenstellung:

Ihr Programm soll zwei Strings einlesen. Der zweite String enthält einen Suchbegriff. Im Suchbegriff haben die folgenden Zeichen eine spezielle Bedeutung:

? * [ ] ^ \

Diese Zeichen werden "Wildcards" genannt. Dabei steht ein Fragezeichen für ein beliebiges Zeichen, ein Stern für einen beliebigen Teilstring (kann auch leer sein) und in eckige Klammern eingeschlossene Zeichen für eines dieser Zeichen.
Wenn aber das erste Zeichen in der eckigen Klammer ein Hochzeichen ^ ist, dann ist jedes Zeichen, das nicht in der Klammer vorkommt, passend. (Siehe hierzu auch die Spezifikation des Erstrundenbeispiels, wo diese Themen erschöpfend erläutert werden).

Mit dem verkehrten Schrägstrich wird die Spezialbedeutung des nächsten Zeichens aufgehoben.

Ihr Programm soll feststellen, ob der Suchbegriff zum ersten String paßt.
Dazu müssen sie den Suchbegriff in Einzelteile zerlegen (jeweils zwischen 2 Sternen) und für jeden Teil prüfen, ob Sie eine Übereinstimmung im ersten String finden (wobei Sie für jeden Teil erst ab der Stelle suchen dürfen, wo Sie mit dem vorhergehenden Teil aufgehört haben). Wenn der Suchbegriff nicht mit einem Stern beginnt, muß der erste Teil mit dem Anfang des ersten Strings übereinstimmen; analoges gilt für das Ende.

Eingabedaten:

Lesen Sie zwei Strings ein. Der erste String darf maximal 30 Zeichen lang sein und unterliegt keinerlei syntaktischen Beschränkungen.

Der zweite String enthält den Suchbegriff. Die Sonderzeichen müssen syntaktisch korrekt gesetzt werden oder durch einen Backslash aufgehoben werden (Falsch wäre z.B. [a[b] , da die zweite öffnende Klammer an dieser Stelle nicht stehen darf. Statt dessen müßte [a\[b] eingegeben werden.)

Der zweite String darf maximal 30 Zeichen lang sein.

Ausgabedaten:

Bei korrekten Eingabedaten soll Ihr Programm "JA" ausgeben, falls der Vergleich positiv ist, ansonsten "NEIN". Geben Sie danach einen Zeilenvorschub aus.

Fehlerbehandlung:

Bei fehlerhaften Eingabedaten ist die Meldung "FALSCHE EINGABE", gefolgt von einem Zeilenvorschub, auszugeben.

Lesen Sie aber auf jeden Fall beide Strings ein, auch wenn schon der erste fehlerhaft ist.

Beispiele:

Eingabedaten
Erich E?*[gh]

Hallo H*x*

Ausgabedaten
JA

NEIN


Testen:

Diese Beispiele dienen nur zur Verdeutlichung der Spezifikation und müssen nicht korrekt formatiert sein. Die korrekte Formatierung entnehmen Sie bitte dem mitgelieferten Outputfile. Zum Testen Ihrer Lösung können Sie aus den mitgelieferten Eingabedaten wie folgt eine Ausgabedatei erzeugen:

java Wildcard < Wildcard.i1 > Wildcard.out1

Das erzeugte File Wildcard.out1 können Sie dann mit dem mitgelieferten Outputfile Wildcard.o1 vergleichen.

Fr Jul 30 13:54:24 CEST 2021
patent_button.gif valid-html401.png elektra.jpg fsfe-logo.png valid-css.png vim.gif anybrowser.gif