У меня есть строка длиной от 1 до 8 символов. Мне нужно преобразовать их в день, месяц и год. Для недостающих частей я буду использовать текущий.C#: Как упростить этот код строки-of-numbers-to-different-date-parts
Код, который у меня есть сейчас, является большим и уродливым, и мне было интересно, есть ли у кого-то более умная идея о том, как это сделать.
Мой текущий код приведен ниже:
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;
}
Примечание: Я знаю, что это не принимая во внимание культуру, но это не должно :)
Я пытался сделать это следующим образом:
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));
Но он будет бросать, если в ArgumentOutOfRangeException
строка длиной 1, 3, 5, 6 или 7 цифр ... так что это не так хорошо работает. Если бы только метод подстроки просто взял столько букв, сколько мог, вместо того, чтобы потерпеть неудачу, когда не было достаточно букв для «заполнения» подстроки ...
Могут ли быть использованы регулярные выражения для этого?
Теперь, смотрите, что это великолепно! Никогда не использовал этот метод раньше. Спасибо! – Svish