2016-04-03 6 views
0

Ich muss nach einem Geburtsdatum in Form von TT/MM/JJJJ fragen, mit den Methoden IndexOf und Substring die Zahlen in ganzzahlige Variablen namens Tag, Monat und Jahr extrahieren. Ich betreibe meine Konsole und Eingang 1995.08.04 es 08 Tage zeigt, 04 Monate und 19 Jahren, aber ich will es 08 Tage angezeigt werden, 04 Monate und 1995 JahreIndexOf & Substring extrahieren die # in Integer-Variable

 string dateOfbirth; 
     string temp; 

     Console.WriteLine("Please enter a DOB in this form dd/mm/yyyy"); 
     temp = Console.ReadLine(); 
     dateOfbirth = temp; 

     int length = dateOfbirth.Length; 
     int index1 = dateOfbirth.IndexOf('/'); 
     int index2 = dateOfbirth.IndexOf('/', index1 + 1); 

     string year = dateOfbirth.Substring(index2 + 1, length/index2/1); 
     string month = dateOfbirth.Substring(index1 + 1, index2/index1/1); 
     string day = dateOfbirth.Substring(0, index1); 

     Console.WriteLine(day + " day " + month + " month " + year + " year "); 

     Console.ReadLine(); 
+1

Gibt es irgendeinen Grund, warum Sie das manuell tun, anstatt 'DateTime.ParseExact' oder' TryParseExact' aufzurufen? –

+1

Frage/Problem –

+0

@JonSkeet Ich denke, das ist Hausaufgaben ....... –

Antwort

0

Sie das Jahr, in Ihrer ursprünglichen Kürzen Code. So müssen Sie dies ändern:

string year = dateOfbirth.Substring(index2 + 1, length/index2/1); 

... dazu:

string year = dateOfbirth.Substring(index2 + 1); 

Der zweite Parameter zu Substring gibt an, wie viele Zeichen zurückgegeben werden soll. Wenn Sie das zweite Argument vollständig weglassen, gibt Substring nur alle verbleibenden Zeichen zurück (was in diesem speziellen Beispiel funktioniert).

+0

Ich habe es vor ein paar Stunden repariert, danke –