1〜8文字の長さの文字列があります。それらを1日、1か月、1年に変換する必要があります。不足している部品については、現在のものを使用します。
私が今持っているコードはちょっと大きくて醜いです、そして誰かがこれをする方法についてもっと賢い考えを持っているかどうか疑問に思いました。
私の現在のコードは以下のとおりです。
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桁の場合は、がスローされます...そのため、うまく機能しませんでした。Substringメソッドだけが、サブストリングを「埋める」のに十分な文字がなかったときに失敗するのではなく、できるだけ多くの文字を取得したとしたら...
これには正規表現を使用できますか?