我现在的代码有点大而且丑陋,我想知道是否有人对如何做到这一点有更聪明的想法.
我目前的代码如下:
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));
但如果字符串长度为1,3,5,6或7位,它将抛出ArgumentOutOfRangeException …因此效果不佳.如果没有足够的字母来“填充”子字符串,那么只有Substring方法才会占用尽可能多的字母而不是失败…
可以使用正则表达式吗?
解决方法 看看 TryParseExact方法.DateTime date;if (DateTime.TryParseExact( digits,new[] { "dd","ddMM","ddMMyyyy" },CultureInfo.InvariantCulture,DateTimeStyles.None,out date)){ int day = date.Day; int month = date.Month; int year = date.Year; }总结
以上是内存溢出为你收集整理的C#:如何简化这个数字字符串到各种日期部分代码全部内容,希望文章能够帮你解决C#:如何简化这个数字字符串到各种日期部分代码所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)