J'ai une chaîne qui pourrait être entre 1 et 8 caractères. J'ai besoin de les convertir en un jour, un mois et un an. Pour les pièces manquantes, je vais utiliser celui en cours.C#: Comment simplifier cette chaîne de nombres-à-divers-date-parties-code
Le code que j'ai maintenant est plutôt gros et moche, et je me demandais si quelqu'un avait une idée plus intelligente sur la façon de faire cela.
Mon code actuel est ci-dessous:
var day = DateTime.Now.Day;
var month = DateTime.Now.Month;
var year = DateTime.Now.Year;
switch (digits.Length)
{
case 1:
case 2:
day = int.Parse(digits.Substring(0));
break;
case 3:
case 4:
day = int.Parse(digits.Substring(0, 2));
month = int.Parse(digits.Substring(2));
break;
case 5:
case 6:
case 7:
case 8:
day = int.Parse(digits.Substring(0, 2));
month = int.Parse(digits.Substring(2, 2));
year = int.Parse(digits.Substring(4));
break;
default:
break;
}
Note: Je sais que cela ne prend pas en considération la culture, mais il est pas censé :)
J'ai essayé de fais comme ça:
day = int.Parse(digits.Substring(0, 2));
if(digits.Length > 2)
month = int.Parse(digits.Substring(2, 2));
if(digits.Length > 4)
year = int.Parse(digits.Substring(4, 4));
Mais il va jeter un ArgumentOutOfRangeException
si la la chaîne a 1, 3, 5, 6 ou 7 chiffres ... donc cela n'a pas marché aussi bien. Si seulement la méthode Substring aurait juste pris autant de lettres que possible au lieu d'échouer quand il n'y avait pas assez de lettres pour "remplir" la sous-chaîne ...
Est-ce que des expressions régulières peuvent être utilisées pour cela?
Maintenant, voyez c'est génial! Jamais vraiment utilisé cette méthode avant réellement. Je vous remercie! – Svish