c# - 比较字符串具有所有数字并比较日期
问题描述
我有一个格式为“YYYYMMDD_NNN”的字符串值。除 _ 外都是整数。我必须验证这个字符串值。
验证所有是否都是整数,除了 _
日期值不应大于今天的日期。
它应该是相同的格式,前 8 个是数字,然后是 _,最后三个是数字。
这就是我写的。有没有更好的方法来改进它或简化版本
string strDate = _htfdate.Substring(0, 8);
if (int.TryParse(strHtfDate, out _))
{
//ok, do something
DateTime dt1;
if(DateTime.TryParse(strHtfDate, out dt1))
{
if (dt1 > DateTime.Today)
//do something
}
}
else
{
//not an int
}
我没有在这里编写代码来验证最后 3 个字符。
解决方案
string datestring = "20190519_562";
//check first 8 characters are digit
var rsult = datestring.Take(8).All(char.IsDigit);
if(rsult == true)
{
// get last three characters of string
string dtst= datestring.Substring(datestring.Length - 4);
if(dtst[0]== '_') // check first character is "_"
{
int length = dtst.Substring(1).Length; // get length of character after "_"
if(length==3)
{
enter code here
}
}
}
推荐阅读
- javascript - 通过 ReactJS 中的 .getUserMedia 访问后单击断开网络摄像头
- python-3.x - 如何使用 GraphQL?
- delphi - Indy 多端口 tcp 未在特定端口接收数据
- typescript - 在 TypeScript 中使用 useNewUrlParser 和 mongoose 输入错误
- python - os.system('cls') 不清除 Pycharm 中的屏幕?
- php - 我想在 php 条件下调用 {{$barang->stock}} 并返回文本值
- swift - 快速设置多个 TableView 高度
- javascript - 如何修复“for”循环中的“let i = 0”值在完成循环后再次变为0?
- ruby - 如何在 Ruby 中使用 require?
- node.js - 在一种方法中找不到 TypeORM 存储库,但在另一种方法中找到