[英]Regex for conditional replace to add leading zeros in a date
我有一个dd/mm/yyyy
格式的日期列表,除了某些日期和月份只有一位数。 例如,
14/09/2019 - dd/mm/yyyy (correct)
1/10/2018 - d/mm/yyyy (should be 01/10/2018)
1/2/2018 - d/m/yyyy (should be 01/02/2018)
我想将所有这些日期转换为可接受的形式,即dd/mm/yyyy
。
我只想在这里使用 REGEX。 另外我想我需要在这里替换条件正则表达式。
伪代码如下:
1/10/2018
则将其格式化为01/10/2018
。1/2/2018
则将其格式化为01/02/2018
。抱歉,我没有任何代码来证明这一点。 我坚持这一点。
使用 C# 的正则表达式替换匹配评估器,这是一个委托操作,每次发生匹配时都会运行。
为此,每次匹配时,将找到的内容转换为所需的格式:
var text = @"1/2/2018";
Regex.Replace(text,
@"\d?\d/\d?\d/\d\d\d\d",
new MatchEvaluator((mtch) =>
DateTime.Parse(mtch.Groups[0].Value).ToString("MM/dd/yyyy")));
替换返回此字符串"01/02/2018"
;
请注意,我只处理一种情况,可以扩展上述委托以读取当前匹配并确定所需的返回格式。
您可以使用此方法一一检查您的日期格式
string convertDateToAcceptedFormat(string inputDate)
{
Regex patternDDMMYYYY = new Regex(@"^(\d\d\/){2}\d{4}$");
if (patternDDMMYYYY.Match(inputDate).Success)
return inputDate;
Regex patternDMMYYYY = new Regex(@"^\d\/\d\d\/\d{4}$");
if (patternDMMYYYY.Match(inputDate).Success)
return "0" + inputDate;
Regex patternDMYYYY = new Regex(@"^(\d\/){2}\d{4}$");
if (patternDMYYYY.Match(inputDate).Success)
return "0" + inputDate.Substring(0,2) + "0" + inputDate.Substring(2);
throw new Exception("Input date doesn't match any pattern");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.