Laden...

Splitten eines Datums (Schulaufgabe)

Erstellt von dan97 vor 8 Jahren Letzter Beitrag vor 8 Jahren 2.107 Views
D
dan97 Themenstarter:in
2 Beiträge seit 2015
vor 8 Jahren
Splitten eines Datums (Schulaufgabe)

Hi,

ich sitze gerade an einer Übungsaufgabe und komme einfach nicht weiter.
Aufgabenstellung:

Funktion ExtrahiereDatum, die aus einem String der Form tt.mm.jjjj Tag, Monat und Jahr extrahiert
(Datentyp int) und als out-Parameter zurückliefert.
Diese Funktion darf folgende Funktionen verwenden:
string[] string.split(params char[]), zerlegt einen String anhand von übergebenen Zeichen in
Einzelteile und liefert diese als String-Array zurück.
ConvertToInt: Umwandlung String in Zahl

Ich hab jetzt schon einigest Probiert, wollte mich schrittweise an die Lösung herantasten aber irgendwie hänge ich fest.

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Bitte datum eingeben:");
            string einlesen = Console.ReadLine();
            ExtrahiereDatum(einlesen);
            Console.ReadLine();

        }
        public static void ExtrahiereDatum(string eingabe)
        {
            string[] split = eingabe.Split(new Char[] { '.', '.', '.' });
            foreach (string s in split)
            {
                
                if (s.Trim() != "")
                    Console.WriteLine(s);

            }

Das ist das was ich bis jetzt habe.

Würde mich freuen wenn mir jemand einen Tipp geben kann.

Danke.

16.842 Beiträge seit 2008
vor 8 Jahren

Und was genau ist das Problem? Wo kommst Du nicht weiter?

Dein Split kann jedenfalls einfach nur

eingabe.Split(new Char[] { '.' });

sein.

Schau Dir auch mal [Artikel] Debugger: Wie verwende ich den von Visual Studio? an.

Bitte in Zukunft auch einen aussagekräftigen Titel wählen.
"Probleme" hat hier quasi jeder - sonst würde man kaum einen Thread eröffnen 😉

D
dan97 Themenstarter:in
2 Beiträge seit 2015
vor 8 Jahren

Ich weis nicht wie ich die einzelnen Strings dann in Int umwandel. Also ConverttoInt kenne ich schon aber ich weis nicht wie ich das jetzt in dem Fall einsetzten muss

16.842 Beiträge seit 2008
vor 8 Jahren

Es gibt Suchmaschinen, die mit Hilfe passender Stichworte etwas finden 😃
zB die Suche nach "c# convert string to int" liefert Dir Gewusst wie: Konvertieren einer Zeichenfolge in eine Zahl (C#-Programmierhandbuch)

Allgemein der Hinweis, dass Du über Suchmaschinen sehr viel schneller (bei solchen Basics) an Ergebnisse und Lösungen kommst, als in einem Forum.
Dass Dir Sonntags jemand so schnell antwortet ist recht selten. Und die Suchergebnisse hast Du binnen Sekunden 😉

s ist Deine Zahl als int.
Also ist Dein gewünschter Wert einfach

int zahl = Convert.ToInt32(s);

Die Dokumentation zeigt Dir dann auch direkt den Rest der Aufgabe; also wie man mit out umgeht.

N
135 Beiträge seit 2006
vor 8 Jahren

Du könntest natürlich auch erst einmal den String in ein Datumsformat konvertieren und dort die Int's herausziehen 😉

DateTime datum = ConvertTo.DateTime(eingabe);

Das DateTime-Objekt hat alle benötigten Werte (Jahr,Monat,Datum) im Int-Format.

...
EDIT: Ach, habe die Aufgabenstellung nicht gelesen 😉

T
67 Beiträge seit 2010
vor 8 Jahren

Wie Abt schon schreibt genügt ein einzelner Punkt für dein Split.

Worauf ich noch hinweisen möchte ist das fehlende Error handling. Ich kann nicht sagen ob dein Lehrer/Prof darauf keinen Wert legt aber meiner Meinung nach gehört so etwas zwingend mit dazu. Ein paar einfache Überprüfungen schaden nicht.

Zum Beispiel kann man nach dem Split prüfen ob das Array die Größe 3 hat.

Du verwendest in deinem Code

if (s.Trim() != "")

Das ist schlechter Stil. Hier bietet sich String.IsNullOrEmpty an.

Was passiert wenn der übergebene String keine Zahl ist? Dann fliegt dir ConvertToInt um die Ohren. Hier wäre Int32.TryParse die bessere Wahl.

16.842 Beiträge seit 2008
vor 8 Jahren
if (s.Trim() != "")

wäre aber !String.IsNullOrWhiteSpace 😉

T
67 Beiträge seit 2010
vor 8 Jahren
if (s.Trim() != "")  

wäre aber !String.IsNullOrWhiteSpace 😉

Mein Fehler. 🙂