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.
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 😉
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
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
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.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
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 😉
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.
if (s.Trim() != "")
wäre aber !String.IsNullOrWhiteSpace
😉
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
if (s.Trim() != "")
wäre aber
!String.IsNullOrWhiteSpace
😉
Mein Fehler. 🙂