DCV 2022 03/Strukturierte Programmierung Uebungen/String Operationen
Im folgenden sollen die String Operationen charAt(), toCharArray(), indexOf(...), replaceAll(...), matches(...), split(...) erarbeitet werden.
Aufgabe: Bubblesort mit Strings
Verwende das gegebene String[] und sortiere es mit einem selbsterstellten Bubblesort Algorithmus und gib es dann aus. Der Bubblesort Algorithmus soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der main Methode.
- Sortiere die Namen aufsteigend (Ascending)
- Sortiere die Namen absteigend (Descending)
Tip.: Strings können mit der Instanz MethodecompareToderStringKlasse verglichen werden:"a".compareTo("b")
String[] names new String[]{"Philipp", "Arda", "Murat", "Jimmy \"Cemil\" McGill", "Sergej", "Razvan", "Timo", "Aron", "Gyula", "Lukas" };
Aufgabe: Bubblesort mit Strings Extended
Verwende das aus der vorhergehenden Aufgabe gegebene String[] und sortiere es mit einem selbsterstellten Bubblesort Algorithmus und gib es dann aus. Der Bubblesort Algorithmus soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der main Methode. Die Methode soll nun zusätzlich zum String[] Parameter einen weiteren boolean als Parameter erhalten. Dieser boolean entscheidet, ob das String[] aufsteigend, oder absteigend sortiert wird.
Aufgabe: Bubblesort mit Strings an Character Index
Verwende das aus der vorhergehenden Aufgabe gegebene String[] und sortiere es mit einem selbsterstellten Bubblesort Algorithmus und gib es dann aus. Der Bubblesort Algorithmus soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der main Methode. Die Methode soll nun zusätzlich zum String[] Parameter einen weiteren int als Parameter erhalten. Dieser int steht für den Index des char im String nach dem sortiert werden soll.
Einencharan einer bestimmten Stelle einesStringerhälts du mitstring.charAt(i), oder auch mitstring.toCharArray()[i], wobei das natürlich ineffizient ist, wenn es öfter aufgerufen werden muss.
Prüfe zuerst ob die Sortierung nach dem gegebenen Index erfolgen kann. Wenn der Index zu groß ist, mach eine entsprechende Ausgabe und sortiere nicht.
Aufgabe: Reverse
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses Wort soll umgedreht und anschließend ausgegeben werden. Verwende hierfür text.toCharArray() für das Aufsplitten und new String(charArray) zum Zusammenfügen.
Ausgabe
Willkommen zum Reverseprogramm!!!111
>>>Hallo
ollaH
Aufgabe: Randomize
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses die Buchstaben des Wortes sollen zufällig vertauscht werden und anschließend ausgegeben werden. Verwende hierfür text.toCharArray() für das Aufsplitten, erstelle ein neues char[], befülle es zufällig mit den Buchstaben des Wortes, füge es mittels new String(charArray) zusammen und gib es aus.
Ausgabe
Willkommen zum Zufallsshuffle Programm!!!111
>>>Hallo
lolHa
Aufgabe: Buchstaben zählen
In der folgenden Aufgabe sollen alle Buchstaben eines Text gezählt werden. Den Text erhältst du über lukas.week4.day4.Text.getSimpleText(). Um die einzelnen Buchstaben zu zählen soll ein int[] verwendet werden. Der entsprechende char kann für das Array als Index verwendet werden. Gib am Schluss die Anzahl der Buchstaben aus.
Ausgabe
A: 10
B: 20
C: 1
...
Aufgabe: Daten tabellarisch darstellen
Erstelle einen schönen tabellarischen Ausdruck aus der folgenden Arrays:
String[] firstName = {"Alfonso", "Beatrix-Eleonor", "Cecil", "Daniel", "Elmar"};
String[] lastName = {"Klein", "Kinderdorfer", "Al Elmenar", "Schmidt", "Simma"};
int[] age = {40, 78, 5, 18, 81};
String[] place = {"Wien", "Schwarzach", "Wiener Neudorf", "Sankt Pölten", "Sankt Pölten"};
float[] distaneFromCapital = {0f, 654.4f, 12.457634366f, 120.0f, 119.9999f};
Denke daran, dass eine Tabelle Kopfzeile, Trennzeichen haben kann.
Aufgabe: Suche nach "Hesse"
Wie oft kommt das Wort "Hesse" in folgendem Text vor? An welchen Stellen?
private static String textToAnalyse = "Zur Zeit des Zweiten Weltkriegs waren seine großen Werke Siddhartha und Der Steppenwolf noch verboten. Heute gehört Hermann Hesse zu den bekanntesten deutschen Schriftstellern. Mehr über den Weltveränderer lest ihr hier\n" +
"Hermann Hesse\n" +
"\n" +
"Hermann Hesse erhielt den Nobelpreis für Literatur\n" +
"Hermann Hesse: Kurz-Steckbrief\n" +
"\n" +
" Vollständiger Name: Hermann Karl Hesse\n" +
" Lebensdaten: 2. Juli 1877 bis 9. August 1962\n" +
" Nationalität: deutsch, später schweizerisch\n" +
" Zitat: \"Wenn wir einen Menschen glücklicher und heiterer machen können, so sollten wir es auf jeden Fall tun, mag er uns darum bitten oder nicht.\"\n" +
"\n" +
"Als Schriftsteller, Dichter und Maler prägte Hermann Hesse die Literatur und Kunst des 19. Jahrhunderts.\n" +
"Wie Hermann Hesse lebte\n" +
"\n" +
"Hermann Hesse wurde am 2. Juli 1877 in Calw, einer Stadt in Württemberg geboren. Seine Familie war sehr religiös, der Vater Johannes sogar Missionar, also so genannter \"Gesandter\", der seinen Glauben weiterverbreiten wollte.\n" +
"\n" +
"So sollten auch die Kinder in die Fußstapfen der religiösen Eltern treten. Hesse war davon aber gar nicht begeistert und soll einmal gesagt haben, dass er \"entweder Dichter oder gar nichts werden\" wolle.\n" +
"\n" +
"1893 verließ der junge Hesse das Gymnasium mit dem Abschluss der Mittleren Reife. Danach schloss er zwei Lehren ab: eine als Turmuhrenmechaniker und eine als Buchhändler.\n" +
"\n" +
"Gegen den Willen seiner Eltern ließ er sich in der Schweizer Stadt Basel nieder, um seinem Traum vom Dichter-Dasein näher zu kommen. 1899 veröffentlichte er seine erste Lyriksammlung. In dieser Zeit heiratete er auch seine erste Frau Maria Bernoulli, von der er sich aber 15 Jahre später wieder trennte. Aus der Ehe gingen drei Söhne hervor.\n" +
"\n" +
"Zwölf Jahre lang ist Adolf Hitler Deutschlands Reichskanzler. Viele Menschen sind damals von ihm begeistert, doch es wird eine Schreckensherrschaft. Wir haben die Geschichte des Nationalsozialismus auf dieser Themenseite für euch zusammengefasst\n" +
"\n" +
"\n" +
"Wie Hermann Hesse die Welt veränderte\n" +
"\n" +
"Um das Jahr 1904 gelang ihm der Durchbruch. Der Roman \"Peter Camenzind\" stimmt an vielen Stellen mit Hesses Leben überein. Literatur-Experten handeln das Werk als \"Beginn des modernen Bildungsromans\". Auf den ersten großen Erfolg folgten weitere beeindruckende Erzählungen und Romane.\n" +
"\n" +
"1914, als der erste Weltkrieg begann, meldete sich der Schriftsteller zum Militärdienst für das Deutsche Reich. Aufgrund seiner Kurzsichtigkeit wurde er aber ausgemustert und der deutschen Kriegsgefangenenfürsorge zugeteilt. Seine Aufgabe war es, für die Gefangenen Bücher zu sammeln. Außerdem leitete er die \"Bücherei für deutsche Kriegsgefangene\".\n" +
"\n" +
"Diese Erfahrungen prägten Hesse sehr. In vielen seiner folgenden Texte sprach er sich deutlich gegen Krieg und Patriotismus (\"Vaterlandsliebe\") aus. Zusätzlich belasteten ihn familiäre Schicksalsschläge: 1916 starb sein Vater, sein Sohn litt an einer schweren Erkrankung und seine Ehe mit Bernoulli ging in die Brüche. Das ging Hesse so nahe, dass er eine Therapie machte. In dieser Phase seines Lebens widmete er sich auch erstmals der Malerei.\n" +
"\n" +
"Innerhalb kurzer Zeit heiratete er daraufhin zweimal: 1924 Ruth Wenger, die Tochter einer bekannten Schriftstellerin, 1931 die Kunsthistorikerin Ninon Dolbin. Gleichzeitig begann der Zweite Weltkrieg. Die Nationalsozialisten erklärten seine Werke als volksfeindlich und verbaten beispielsweise \"Unterm Rad\", \"Der Steppenwolf\" und \"Betrachtungen\". Hesses Verleger Peter Suhrkamp wurde 1944 sogar verhaftet.\n" +
"\n" +
"Hermann Hesse ließ sich den Mund aber nicht verbieten: Weiterhin schrieb er Regime-kritische Texte, also Texte, die die nationalsozialistische Herrschaft unter Adolf Hitler angriffen. Nach dem Zweiten Weltkrieg wurden diese dann auch veröffentlicht.\n" +
"\n" +
"Er hasste den Krieg. In seinem Testament widmete der Physiker und Chemiker Alfred Nobel sein Vermögen unter anderem der Vergabe des jährlichen Friedenspreises\n" +
"Hermann Hesses Tod in der Schweiz\n" +
"\n" +
"1946 zog sich Hesse zurück, da sein Gesundheitszustand immer schlechter wurde. \"Das Glasperlenspiel\" und \"Krieg und Frieden\" waren Anlass dafür, dass er am 14. November desselben Jahres mit dem Nobelpreis für Literatur ausgezeichnet wurde. Für sein Lebenswerk wurde er ein Jahr später zum Ehrendoktor sowie Ehrenbürger von Calw, seiner Geburtsstadt, ernannt. 1955 folgte der Friedenspreis des Deutschen Buchhandels.\n" +
"\n" +
"Am 9. August 1962 starb Hermann Hesse an einem Gehirnschlag in seinem Haus in der Schweiz. Heute gehört Hermann Hesse zu denbekanntesten deutschsprachigenr Schriftstellern. Seine Werke wurden in 55 Sprachen übersetzt.\n" +
"Zitate von Hermann Hesse\n" +
"\n" +
"\"Man muß das Unmögliche versuchen, um das Mögliche zu erreichen.\"\n" +
"Hermann Hesse\n" +
" \n" +
"\n" +
"\"Man braucht vor niemand Angst zu haben. Wenn man jemanden fürchtet, dann kommt es daher, daß man diesem Jemand Macht über sich eingeräumt hat.\"\n" +
"Hermann Hesse, Demian\n" +
" \n" +
"\n" +
"\"Man hat nur Angst, wenn man mit sich selber nicht einig ist.\"\n" +
"Hermann Hesse, Demian\n" +
" \n" +
"\n" +
"\"Recht als wolle es ihn mit der Nase darauf stoßen, hatte sein Glück ihm diese prächtige Figur in seinen Weg gestellt, daß er sich an sie halte. Aber der Mensch ist zu nichts schwerer zu bringen als zu seinem Glück.\"\n" +
"Hermann Hesse, Der Weltverbesserer\n" +
" \n" +
"\n" +
"\"Wenn wir einen Menschen glücklicher und heiterer machen können, so sollten wir es in jedem Fall tun, mag er uns darum bitten oder nicht.\"\n" +
"Hermann Hesse, Das Glasperlenspiel\n" +
" \n" +
"\n" +
"\"Die Welt zu durchschauen, sie zu verachten, mag großer Denker Sache sein. Mir aber liegt einzig daran, die Welt lieben zu können, sie und mich und alle Wesen mit Liebe und Bewunderung und Ehrfurcht betrachten zu können.\"\n" +
"Hermann Hesse\n";
Aufgabe: Text "Hesse" hervorheben
Verwende den Text aus der vorhergehenden Aufgabe. Bei der Ausgabe des Texts sollen alle Vorkommonisse von Hesse auf Uppercase (HESSE) gestellt werden.
Verwende die replace() Funktion.
Erweitere dein Programm um User Input, dass der User beliebige Worte auf Uppercase ändern kann.
Aufgabe: Längste gemeinsamer Substring
Frage den Anwender zwei String einzugeben. Analysiere die Texte und finde die längste gemeinsame Substring.
Aufgabe: Email Regex aka. Regbert
Erstelle einen regulären Ausdruck (Regular Expression) für Email Adressen.
String regex = "[richtiger Regex hier]";
Aufruf System.out.println("alfons@drlue.at".matches(regex)); Ausgabe true
Aufruf System.out.println("rambina.alfons@drlue.at".matches(regex)); Ausgabe true
Aufruf System.out.println("rambina1.1alfons@drlue.at".matches(regex)); Ausgabe true
Aufruf System.out.println("1rambina1.alfons@drlue.at".matches(regex)); Ausgabe false
Aufruf System.out.println("@drlue.at".matches(regex)); Ausgabe false
Aufruf System.out.println("drlue.at".matches(regex)); Ausgabe false
Aufruf System.out.println("asdf@drlue".matches(regex)); Ausgabe false
Aufruf System.out.println("asdf@microsoft.c".matches(regex)); Ausgabe false
Aufgabe: Replace all
Ersetze im String
"Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!"
wird durch war und ist und gib ihn aus.
Aufgabe: Replace all 2
Lösche im String
"Heute wird ein guter Tag! Heute wird ein noch guterer Tag! Heute wird ein spitzen guter Tag!"
- Jeden Kleinbuchstaben und gib ihn aus
- Jeden Großbuchstaben und gib ihn aus
- Jedes Leerzeichen und gib ihn aus
- Jedes Ausrufezeichen ! und gib ihn aus
Aufgabe: Replace all 3
Lösche im String
"749813247132984712039487123049871204398712039487"
- Alle Zahlen von 0 bis 9 und gib ihn aus
- Alle Zahlen von 1 bis 9 und gib ihn aus
- Alle Zahlen von 2 bis 4 und gib ihn aus
- Alle Zahlen von 1 bis 3 und 6 bis 9 und gib ihn aus
Aufgabe: Split
Erstelle eine Methode welche den String
"Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!"
mit Hilfe eines gegebenen Strings zerlegt, welcher als Parameter mitgegeben wird und den das String[] zurückgibt. Füge das String[] mittels eines StringBuilder wieder zusammen füge jedoch nach jedem append auch einen System.lineSeparator() hinzu. Gib dann den String den du vom StringBuilder erhältst aus. Teste deine Methode in der main Methode mit einigen Beispielen.
Aufruf
String[] words = wordSplit(text, "Tag");
...
Ausgabe
Heute wird ein guter
! Heute wird der beste
überhaupt! Heute wird ein spitzen super
!
Aufgabe: Split & Sort
Erstelle eine Methode welche den String
"Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!"
in seine Worte zerlegt. Sortiere dann die Worte mit Bubblesort. Füge das String[] mittels eines StringBuilder wieder zusammen gib dann den String, den du von StringBuilder erhältst aus.