我有一个日期列表,例如:
14/09/2019 - dd/mm/yyyy
1/10/2018 - m/dd/yyyy
1/2/2018 - d/m/yyyy
我想将所有这些日期转换为dd/mm/yyy
的可接受格式。
我只想在这里使用REGEX。另外,我认为我需要在此处替换条件正则表达式。
伪代码如下:
1/10/2018
,则将其格式化为01/10/2018
。 1/2/2018
,则将其格式化为01/02/2018
。对不起,但是我没有任何代码可以证明这一点。我对此感到困惑。
答案 0 :(得分:1)
您可以使用此方法逐一检查日期格式
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");
}
答案 1 :(得分:0)
使用C#的正则表达式替换match evaluator,这是每次匹配发生时运行的委托操作。
为此,每次匹配时,将找到的内容转换为所需的格式:
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"
;
请注意,我只处理一种情况,可以扩展上述委托以读取当前比赛并确定所需的返回格式。