DCV 2023 09/Strukturierte Programmierung Uebungen/String Aufgaben: Unterschied zwischen den Versionen

Aus CCWiki
Zur Navigation springen Zur Suche springen
Gyula (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Hzayn (Diskussion | Beiträge)
 
(17 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Im folgenden sollen die {{JSL|String}} Operationen {{JSL|charAt()}}, {{JSL|toCharArray()}}, {{JSL|indexOf(...)}}, {{JSL|replaceAll(...)}}, {{JSL|matches(...)}}, {{JSL|split(...)}} und {{JSL|substring(...)}} erarbeitet werden.
Im folgenden sollen die [https://learn.microsoft.com/en-us/dotnet/api/system.string?view=net-7.0 String] Operationen {{JSL|[i]}}, {{JSL|ToCharArray()}}, {{JSL|IndexOf(...)}}, {{JSL|Replace(...)}}, {{JSL|Insert(...)}}, {{JSL|Split(...)}} und {{JSL|Substring(...)}} erarbeitet werden.




=== Aufgabe: Bubblesort mit Strings ===  
=== Aufgabe: Bubblesort mit Strings ===  
Verwende den gegebenen {{JSL|String[]}} und sortiere es mit einem selbsterstellten '''Bubblesort Algorithmus''' und gib es dann aus. Sortiere zuerst nach der Länge der Namen, dann nach dem Alphabet. Der '''Bubblesort Algorithmus''' soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|main}} Methode.
Verwende den gegebenen {{JSL|String[]}} und sortiere es mit einem selbsterstellten '''Bubblesort Algorithmus''' und gib es dann aus. Sortiere zuerst nach der Länge der Namen, dann nach dem Alphabet. Der '''Bubblesort Algorithmus''' soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der {{JSL|public static void Start()}} Methode.
# Sortiere die Namen nach Länge aufsteigend (Ascending)
# Sortiere die Namen nach Länge aufsteigend (Ascending)
# Sortiere die Namen nach Länge absteigend (Descending)
# Sortiere die Namen nach Länge absteigend (Descending)
# Sortiere die Namen lexikographisch aufsteigend (Ascending)
# Sortiere die Namen lexikographisch aufsteigend (Ascending)
# Sortiere die Namen lexikographisch absteigend (Descending)
# Sortiere die Namen lexikographisch absteigend (Descending)
  Tip.: Strings können mit der Instanz Methode {{JSL|compareTo}} der {{JSL|String}} Klasse verglichen werden: {{JSL|"a".compareTo("b")}}
  Tip.: Strings können mit der Instanz Methode {{JSL|CompareTo}} der {{JSL|String}} Klasse verglichen werden: {{JSL|"a".CompareTo("b")}}
{{JML|code=
{{JML|code=
String[] names = new String[]{"Joachim", "Mert", "Eric", "Marie Christine", "Benjamin", "Sandro", "Aygün", "Hassan", "Svitlana", "Lukas", "Gyula" };
String[] names = new String[]{"Jovo", "Mehmet", "Sven", "Martin", "Selina", "Niklas", "Ali", "Fabienne", "Lukas", "Sandro", "Hassan", "Berna", "Gyula", "Dimitri", "Patrick", "Kerem", "Timo", "Gheorghe", "Mohammed", "Cemal", "Simon", "Fabian", "Dario", "Michael", "Erik", "David", "Riccardo", "Eren" };
}}
}}


=== Aufgabe: Bubblesort mit Strings Extended ===
=== Aufgabe: Bubblesort mit Strings Extended ===
Verwende das aus der vorhergehenden Aufgabe gegebene {{JSL|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 {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|boolean}} als Parameter erhalten. Dieser {{JSL|boolean}} entscheidet, ob das {{JSL|String[]}} '''aufsteigend''', oder '''absteigend''' sortiert wird.
Verwende das aus der vorhergehenden Aufgabe gegebene {{JSL|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 {{JSL|public static void Start()}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|boolean}} als Parameter erhalten. Dieser {{JSL|boolean}} entscheidet, ob das {{JSL|String[]}} '''aufsteigend''', oder '''absteigend''' sortiert wird.


=== Aufgabe: Bubblesort mit Strings und Character Index ===
=== Aufgabe: Bubblesort mit Strings und Character Index ===
Verwende den aus der vorhergehenden Aufgabe gegebenen {{JSL|String[]}} , sortiere ihn 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 {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|int}} als Parameter erhalten. Dieser {{JSL|int}} steht für den Index des {{JSL|char}} im {{JSL|String}} , nach dem sortiert werden soll. Das bedeutet: von "apfel" wäre charAt(2) = "f" und von "Birne" "r".  Sortiere also nicht nach dem ersten Buchstabe wie in der Aufgabe zuvor, sondern nach charAt(2), also nach dem 3. Buchstaben.   
Verwende den aus der vorhergehenden Aufgabe gegebenen {{JSL|String[]}} , sortiere ihn 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 {{JSL|main}} Methode. Die Methode soll nun zusätzlich zum {{JSL|String[]}} Parameter einen weiteren {{JSL|int}} als Parameter erhalten. Dieser {{JSL|int}} steht für den Index des {{JSL|char}} im {{JSL|String}} , nach dem sortiert werden soll. Das bedeutet: von "apfel" wäre charAt(2) = "f" und von "Birne" "r".  Sortiere also nicht nach dem ersten Buchstabe wie in der Aufgabe zuvor, sondern nach charAt(2), also nach dem 3. Buchstaben.   
  Einen {{JSL|char}} an einer bestimmten Stelle eines {{JSL|String}} erhälst du mit {{JSL|string.charAt(i)}}, oder auch mit {{JSL|string.toCharArray()[i]}}, wobei das natürlich ineffizient ist, wenn es öfter aufgerufen werden muss.
  Einen {{JSL|char}} an einer bestimmten Stelle eines {{JSL|String}} erhälst du mit {{JSL|[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.
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 ===
=== Aufgabe: Reverse ===
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses Wort soll umgedreht und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.toCharArray()}} für das Aufsplitten und {{JSL|new String(charArray)}} zum Zusammenfügen.
Es soll ein Wort über die Kommandozeile eingelesen werden, dieses Wort soll umgedreht und anschließend ausgegeben werden. Verwende hierfür {{JSL|text.ToCharArray()}} für das Aufsplitten und {{JSL|new String(charArray)}} zum Zusammenfügen.


'''Ausgabe'''
'''Ausgabe'''
Zeile 42: Zeile 42:


=== Aufgabe: Buchstaben zählen ===
=== Aufgabe: Buchstaben zählen ===
In der folgenden Aufgabe sollen alle Buchstaben und Zeichen eines Texts gezählt werden. Den Text erhältst du über {{JSL|lukas.data.Texts.getSimpleText()}}.
In der folgenden Aufgabe sollen alle Buchstaben und Zeichen eines Texts gezählt werden. Den Text erhältst du über {{JSL|Ressources.StringRessources.getText()}}.
 
{{BML|code=
Denke daran, die Ressources als Reference zu dem Projekt zu geben... Im Zweifelsfall frage Hassan ;-)
}}


Um die einzelnen Buchstaben und Zeichen zu zählen soll ein {{JSL|int[]}} verwendet werden. Der entsprechende {{JSL|char}} kann für das Array als Index verwendet werden. Gib am Schluss die Anzahl der einzelnen Zeichen (zb. A,a,ä,.) aus.
Um die einzelnen Buchstaben und Zeichen zu zählen soll ein {{JSL|int[]}} verwendet werden. Der entsprechende {{JSL|char}} kann für das Array als Index verwendet werden. Gib am Schluss die Anzahl der einzelnen Zeichen (zb. A,a,ä,.) aus.
Zeile 66: Zeile 70:
  Denke daran, dass eine Tabelle eine Kopfzeile und Trennzeichen haben kann.
  Denke daran, dass eine Tabelle eine Kopfzeile und Trennzeichen haben kann.


=== Aufgabe: Email Regex aka. Regbert ===
=== Aufgabe: Email Regex aka. Regbert ===
Erstelle einen '''regulären Ausdruck''' ('''Reg'''ular '''Ex'''pression) für Email Adressen.
Erstelle einen '''regulären Ausdruck''' ('''Reg'''ular '''Ex'''pression) für Email Adressen.


{{JML|code=
{{JML|code=
Zeile 73: Zeile 78:
}}
}}


'''Aufruf'''{{Space10}}{{JSL|System.out.println("alfons@drlue.at".matches(regex));}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|true}}
'''Aufruf'''{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch("alfons@drlue.at", regex));}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|true}}


'''Aufruf'''{{Space10}}{{JSL|System.out.println("rambina.alfons@drlue.at".matches(regex));}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|true}}
'''Aufruf'''{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch("rambina.alfons@drlue.at", regex));}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|true}}


'''Aufruf'''{{Space10}}{{JSL|System.out.println("rambina1.1alfons@drlue.at".matches(regex));}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|true}}
'''Aufruf'''{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch("rambina1.1alfons@drlue.at", regex));}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|true}}


'''Aufruf'''{{Space10}}{{JSL|System.out.println("1rambina1.alfons@drlue.at".matches(regex));}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|false}}
'''Aufruf'''{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch("1rambina1.alfons@drlue.at", regex));}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|false}}


'''Aufruf'''{{Space10}}{{JSL|System.out.println("@drlue.at".matches(regex));}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|false}}
'''Aufruf'''{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch("@drlue.at", regex));}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|false}}


'''Aufruf'''{{Space10}}{{JSL|System.out.println("drlue.at".matches(regex));}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|false}}
'''Aufruf'''{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch("drlue.at", regex));}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|false}}


'''Aufruf'''{{Space10}}{{JSL|System.out.println("asdf@drlue".matches(regex));}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|false}}
'''Aufruf'''{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch("asdf@drlue", regex));}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|false}}


'''Aufruf'''{{Space10}}{{JSL|System.out.println("asdf@microsoft.c".matches(regex));}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|false}}
'''Aufruf'''{{Space10}}{{JSL|Console.WriteLine(Regex.IsMatch("asdf@microsoft.c", regex));}}{{Space10}}'''Ausgabe'''{{Space10}}{{BSL|false}}


=== Aufgabe: Suche nach "Hesse" ===
=== Aufgabe: Suche nach "Hesse" ===
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}}.
Verwende für folgende Aufgabe den Text in {{JSL|Ressources.StringRessources.getHesse()}}.


Wie oft kommt das Wort "Hesse" in folgendem Text vor? An welchen Stellen?
Wie oft kommt das Wort "Hesse" in folgendem Text vor? An welchen Stellen?
Zeile 97: Zeile 102:


=== Aufgabe: Text "Hesse" hervorheben ===
=== Aufgabe: Text "Hesse" hervorheben ===
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}}.
Verwende für folgende Aufgabe den Text in {{JSL|Ressources.StringRessources.getHesse()}}.


Bei der Ausgabe des Texts sollen alle Vorkommonisse von '''Hesse''' auf Uppercase ('''HESSE''') gestellt werden.
Bei der Ausgabe des Texts sollen alle Vorkommonisse von '''Hesse''' auf Uppercase ('''HESSE''') gestellt werden.
Verwende die {{JSL|replace()}} Funktion.
Verwende die {{JSL|Replace()}} Funktion.


Erweitere dein Programm um User Input, dass der User beliebige Worte auf Uppercase ändern kann.
Erweitere dein Programm um User Input, dass der User beliebige Worte auf Uppercase ändern kann.


=== Aufgabe: Replace all ===
=== Aufgabe: Replace all ===
Zeile 165: Zeile 169:
{{JSL|"Heute wird ein guter Tag! Heute wird der beste Tag überhaupt! Heute wird ein spitzen super Tag!"}}
{{JSL|"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 {{JSL|String[]}} zurückgibt. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen füge jedoch nach jedem {{JSL|append}} auch einen {{JSL|System.lineSeparator()}} hinzu. Gib dann den {{JSL|String}} den du vom {{JSL|StringBuilder}} erhältst aus. Teste deine Methode in der {{JSL|main}} Methode mit einigen Beispielen.
mit Hilfe eines gegebenen Strings zerlegt, welcher als Parameter mitgegeben wird und den das {{JSL|String[]}} zurückgibt. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen füge jedoch nach jedem {{JSL|Append}} auch einen {{JSL|System.Environment.NewLine()}} hinzu. Gib dann den {{JSL|String}} den du vom {{JSL|StringBuilder}} erhältst aus. Teste deine Methode in der {{JSL|Main}} Methode mit einigen Beispielen.


'''Aufruf'''
'''Aufruf'''
Zeile 189: Zeile 193:


in seine Worte zerlegt. Sortiere dann die Worte mit '''Bubblesort'''. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen gib dann den {{JSL|String}}, den du von {{JSL|StringBuilder}} erhältst aus.
in seine Worte zerlegt. Sortiere dann die Worte mit '''Bubblesort'''. Füge das {{JSL|String[]}} mittels eines {{JSL|StringBuilder}} wieder zusammen gib dann den {{JSL|String}}, den du von {{JSL|StringBuilder}} erhältst aus.
  Sortier lexikographisch aufsteigend mittels {{JSL|string.compareTo(...)}}
  Sortier lexikographisch aufsteigend mittels {{JSL|string.Compare(...)}}


'''Ausgabe'''
'''Ausgabe'''
Zeile 196: Zeile 200:


=== Aufgabe: Wortanalyse ===
=== Aufgabe: Wortanalyse ===
Verwende für folgende Aufgabe den Text in {{JSL|data.Texts.HESSE}} und {{JSL|data.Texts.getSimpleText()}} um eine Wortanalyse durchzuführen.
Verwende für folgende Aufgabe den Text in {{JSL|Ressources.StringRessources.getHesse()}} und {{Ressources.StringRessources.getText()}} um eine Wortanalyse durchzuführen.


Erstelle für folgende Aufgabenstellungen eigene Methoden. Diese sollen so flexibel wie möglich und testbar geschrieben werden. Achte darauf vor der Verarbeitung unerwünschte Zeichenfolgen zu entfernen, diese könnten sich negativ auf die Textverarbeitung auswirken (''', oder . oder -''' ist nicht das kürzeste Wort). Erstelle für jede Aufgabe einen aussagekräftigen Unit Test:
Erstelle für folgende Aufgabenstellungen eigene Methoden. Diese sollen so flexibel wie möglich und testbar geschrieben werden. Achte darauf vor der Verarbeitung unerwünschte Zeichenfolgen zu entfernen, diese könnten sich negativ auf die Textverarbeitung auswirken (''', oder . oder -''' ist nicht das kürzeste Wort). Erstelle für jede Aufgabe einen aussagekräftigen Unit Test:

Aktuelle Version vom 24. Oktober 2023, 07:22 Uhr

Im folgenden sollen die String Operationen [i], ToCharArray(), IndexOf(...), Replace(...), Insert(...), Split(...) und Substring(...) erarbeitet werden.


Aufgabe: Bubblesort mit Strings

Verwende den gegebenen String[] und sortiere es mit einem selbsterstellten Bubblesort Algorithmus und gib es dann aus. Sortiere zuerst nach der Länge der Namen, dann nach dem Alphabet. Der Bubblesort Algorithmus soll in einer eigenen Methode implementiert werden. Der Aufruf und die Ausgabe erfolgt in der public static void Start() Methode.

  1. Sortiere die Namen nach Länge aufsteigend (Ascending)
  2. Sortiere die Namen nach Länge absteigend (Descending)
  3. Sortiere die Namen lexikographisch aufsteigend (Ascending)
  4. Sortiere die Namen lexikographisch absteigend (Descending)
Tip.: Strings können mit der Instanz Methode CompareTo der String Klasse verglichen werden: "a".CompareTo("b")
String[] names = new String[]{"Jovo", "Mehmet", "Sven", "Martin", "Selina", "Niklas", "Ali", "Fabienne", "Lukas", "Sandro", "Hassan", "Berna", "Gyula", "Dimitri", "Patrick", "Kerem", "Timo", "Gheorghe", "Mohammed", "Cemal", "Simon", "Fabian", "Dario", "Michael", "Erik", "David", "Riccardo", "Eren" };

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 public static void Start() 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 und Character Index

Verwende den aus der vorhergehenden Aufgabe gegebenen String[] , sortiere ihn 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. Das bedeutet: von "apfel" wäre charAt(2) = "f" und von "Birne" "r". Sortiere also nicht nach dem ersten Buchstabe wie in der Aufgabe zuvor, sondern nach charAt(2), also nach dem 3. Buchstaben.

Einen char an einer bestimmten Stelle eines String erhälst du mit [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 und Zeichen eines Texts gezählt werden. Den Text erhältst du über Ressources.StringRessources.getText().

Denke daran, die Ressources als Reference zu dem Projekt zu geben... Im Zweifelsfall frage Hassan ;-)

Um die einzelnen Buchstaben und Zeichen 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 einzelnen Zeichen (zb. A,a,ä,.) aus.

Ausgabe

A: 10
B: 20
C: 1
...

Aufgabe: Daten tabellarisch darstellen

Erstelle einen schönen tabellarischen Ausgabe aus den 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[] distanceFromCapital = {0f, 654.4f, 12.457634366f, 120.0f, 119.9999f};
Denke daran, dass eine Tabelle eine Kopfzeile und Trennzeichen haben kann.

Aufgabe: Email Regex aka. Regbert

Erstelle einen regulären Ausdruck (Regular Expression) für Email Adressen.


String regex = "[richtiger Regex hier]";

Aufruf          Console.WriteLine(Regex.IsMatch("alfons@drlue.at", regex));          Ausgabe          true

Aufruf          Console.WriteLine(Regex.IsMatch("rambina.alfons@drlue.at", regex));          Ausgabe          true

Aufruf          Console.WriteLine(Regex.IsMatch("rambina1.1alfons@drlue.at", regex));          Ausgabe          true

Aufruf          Console.WriteLine(Regex.IsMatch("1rambina1.alfons@drlue.at", regex));          Ausgabe          false

Aufruf          Console.WriteLine(Regex.IsMatch("@drlue.at", regex));          Ausgabe          false

Aufruf          Console.WriteLine(Regex.IsMatch("drlue.at", regex));          Ausgabe          false

Aufruf          Console.WriteLine(Regex.IsMatch("asdf@drlue", regex));          Ausgabe          false

Aufruf          Console.WriteLine(Regex.IsMatch("asdf@microsoft.c", regex));          Ausgabe          false

Aufgabe: Suche nach "Hesse"

Verwende für folgende Aufgabe den Text in Ressources.StringRessources.getHesse().

Wie oft kommt das Wort "Hesse" in folgendem Text vor? An welchen Stellen?

Knobelaufgabe: Gibt es eine einfache Lösung die die Anzahl der Vorkommnisse in einer Zeile ermittelt?

Aufgabe: Text "Hesse" hervorheben

Verwende für folgende Aufgabe den Text in Ressources.StringRessources.getHesse().

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: 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!"

  1. Jeden Kleinbuchstaben und gib ihn aus
  2. Jeden Großbuchstaben und gib ihn aus
  3. Jedes Leerzeichen und gib ihn aus
  4. Jedes Ausrufezeichen ! und gib ihn aus

Aufgabe: Replace all 3

Lösche im String

"749813247132984712039487123049871204398712039487"

  1. Alle Zahlen von 0 bis 9 und gib ihn aus
  2. Alle Zahlen von 1 bis 9 und gib ihn aus
  3. Alle Zahlen von 2 bis 4 und gib ihn aus
  4. Alle Zahlen von 1 bis 3 und 6 bis 9 und gib ihn aus

Aufgabe: Längster gemeinsamer Substring

Der Anwender soll zwei Strings eingeben. Finde den längsten gemeinsamen Substring beider Strings.

  1. Finde das längste gemeinsame Wort
    1. Erstelle aussagekräftige Unittests
  2. Bonus finde die längste gemeinsame Zeichenkette
    1. Erstelle aussagekräftige Unittests

Ausgabe 1

Bitte gib Wort 1 ein:
>>>Hallo wie gehts dir?
Bitte gib Wort 2 ein:
>>>Mir gehts gut!
längster gemeinsamer Substring:
gehts

Ausgabe 2 (Bonus)

Bitte gib Wort 1 ein:
>>>Barbara
Bitte gib Wort 2 ein:
>>>Rhabarber
längster gemeinsamer Substring:
bar

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.Environment.NewLine() 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.

Sortier lexikographisch aufsteigend mittels string.Compare(...)

Ausgabe

[überhaupt!, wird, wird, wird, super, spitzen, guter, ein, ein, der, beste, Tag!, Tag!, Tag, Heute, Heute, Heute]

Aufgabe: Wortanalyse

Verwende für folgende Aufgabe den Text in Ressources.StringRessources.getHesse() und Vorlage:Ressources.StringRessources.getText() um eine Wortanalyse durchzuführen.

Erstelle für folgende Aufgabenstellungen eigene Methoden. Diese sollen so flexibel wie möglich und testbar geschrieben werden. Achte darauf vor der Verarbeitung unerwünschte Zeichenfolgen zu entfernen, diese könnten sich negativ auf die Textverarbeitung auswirken (, oder . oder - ist nicht das kürzeste Wort). Erstelle für jede Aufgabe einen aussagekräftigen Unit Test:

  1. Längstes Wort
  2. Kürzestes Wort
  3. Worte alphabetisch sortieren
  4. Worte alphabetisch sortieren Unique (jedes Wort darf nur einmal ausgegeben werden)
  5. Worte zählen und nach ihrer Häufigkeit ausgeben

Aufgabe: Rekursive Funktion: Fakultät

Erstelle eine Methode um die Fakultät einer Zahl zu berechnen.

Die Fakultät (manchmal, besonders in Österreich, auch Faktorielle genannt) ist in der Mathematik diejenige Funktion, die jeder natürlichen Zahl das Produkt aller positiven natürlichen Zahlen zuordnet, die diese Zahl nicht übertreffen.[1]

fac(n) = n * fac(n -1)
fac(1) = 1
Bsp.: fac(5) => 5 * 4 * 3 * 2 * 1 => 120

Aufgabe: Rekursive Funktion: Permutation

Erstelle eine Methode, die alle möglichen Permutationen eines Strings generiert.

Aufruf

perm("ABCD")

Ausgabe

Permutationen:
ABCD
ABDC
ACBD
ACDB
ADBC
ADCB
BACD
BADC
BCAD
BCDA
BDAC
BDCA
CABD
CADB
CBAD
CBDA
CDAB
CDBA
DABC
DACB
DBAC
DBCA
DCAB
DCBA
Tip um Ergebnis zu prüfen: Die Anzahl der generierte Permutationen muss gleich der Fakultät der Länge des verwendeten Strings sein.