Christian Treppo "Compchar" ------------------------------------------------------------------------------- Aufgabenstellung laut Spezifikation: Das Programm soll zwei Strings einlesen, von denen der erste nur ein Zeichen lang sein soll. Dieses Zeichen sei Vergleichszeichen genannt. Der zweite String enthält einen Suchbegriff. In diesem Suchbegriff haben folgende Zeichen eine spezielle Bedeutung: \ [ ] ^ ? Der Suchbegriff kann eine der folgenden Möglichkeiten sein: a) ein normales Zeichen (also keines der oben genannten Spezialzeichen) Beispiel: A b) ein Fragezeichen Beispiel: ? c) ein Backslash (verkehter Schrägstrich) gefolgt von einem beliebigen Zeichen (also auch ein weiteres Spezialzeichen) Beispiel: \] d) eine Liste von zulässigen Zeichen, die in Eckigen Klammern eingeschlossen sind Beispiel: [ABC] e) eine Liste von unzulässigen Zeichen, die in Eckigen Klammern eingeschlossen sind, wobei nach der öffnenden Klammer ein Hochzeichen (^) kommt Beispiel: [^ABC] Fall a) ist einfach: Der Vergleich ist positiv, wenn beide Zeichen identisch sind. Im Fall b) ist der Vergleich immer positiv. Im Fall c) ist der Vergleich positiv, wenn das Vergleichszeichen mit dem zweiten Zeichen des Suchbegriffs übereinstimmt. Achtung: das zweite Zeichen des Suchbegriffs muß nicht unbedingt ein Sonderzeichen sein, auch normale Zeichen sind erlaubt! Im Fall d) ist der Vergleich positiv, wenn das Vergleichszeichen in der eckigen Klammer vorkommt. Achtung: Im Suchbegriff können mit dem Zeichen \ analog zum Fall b) Sonderzeichen aufgeführt werden, deren Spezialbedeutung dadurch aufgehoben wird. Die öffnenden und schließenden Klammern sind in den Vergleich nicht einzubeziehen. Im Fall e) ist der Vergleich positiv, wenn das Vergleichszeichen NICHT in der eckigen Klammer vorkommt. Achtung: Im Suchbegriff können mit dem Zeichen \ analog zum Fall b) Sonderzeichen aufgeführt werden, deren Spezialbedeutung dadurch aufgehoben wird. Die öffnenden und schließenden Klammern sowie das Hochzeichen sind in den Vergleich nicht einzubeziehen. ------------------------------------------------------------------------------- Lösungsweg: Deklaration Zu erst kommt die Deklaration der einzelnen Variablen, vor allem der Vergleichszeichenstring ("VglzeichenString") und der Suchbegriffsstring. Weiters die Sonderzeichen als int-Wert. Die Variable Ergebnis ist vorläufig "NEIN" gesetzt. ............................................................................... Eingabe Hier werden die zwei Strings mit Hilfe der Methode EprogIO.readWord() eingelesen und in int-Werte umgewandelt. ............................................................................... Vergleich Backslash: Jetzt beginnt der Vergleich der beiden Eingaben und die Erkennung von Sonderzeichen. Als erstes Sonderzeichen kommt der Backslash dran, weil dieser praktisch übersprungen wird. Ich habe eine while-Schleife eingebaut, weil auch mehrere Backslashs hintereinander gültig sind und einfach mit jedem Backslash das Programm zum nächsten eingegebenen Zeichen springt. Fragezeichen: Wenn das Suchbegriffszeichen ein Fragezeichen ist, wird die Ergebnis "JA" zugewiesen. KlammerAuf: Ist das Suchbegriffszeichen eine Öffnende eckige Klammer, springt das Programm zum nächsten Zeichen: -- entweder Ausnahme: : Kommt nun das Ausnahmezeichen, dann wird Ergebnis "NEIN", wenn das : gesuchte Zeichen bis zum Ende des Strings vorkommt. Gesucht wird mit Hilfe : der Methode indexOf(). Diese gibt die Stelle des gefundenen Zeichens als : int-Wert aus. Wird das gesucht Zeichen nicht gefunden, wird -1 ausgegeben. -- oder: Es wird ebenfalls mit indeOf() nach dem Zeichen gesucht, allerdings wird bei erfolgreicher Suche Ergebnis diesmal "JA" zugewiesen. ------------------------------------------------------------------------------- Ende des Programms. -------------------------------------------------------------------------------