C# 从日期开始替换一个额外的号码
我有OCR提取的日期字符串,因为图像质量日期的第二个斜杠为1 i、 e.日期为2014年2月23日,其中1年前应为/实际为。我试图用正则表达式替换1,但它不起作用。C# 从日期开始替换一个额外的号码,c#,regex,datetime,C#,Regex,Datetime,我有OCR提取的日期字符串,因为图像质量日期的第二个斜杠为1 i、 e.日期为2014年2月23日,其中1年前应为/实际为。我试图用正则表达式替换1,但它不起作用。 DateTime.TryParseExact不起作用,我尝试的代码是: string mm = "23/0212014"; var rex = new Regex(@"(?:((\d{2}\/\d{2})1(\d{4})))"); mm = rex.Replace(mm, ""); 如何将其转换为正确的日期(dd/MM/yyyy)
DateTime.TryParseExact
不起作用,我尝试的代码是:
string mm = "23/0212014";
var rex = new Regex(@"(?:((\d{2}\/\d{2})1(\d{4})))");
mm = rex.Replace(mm, "");
如何将其转换为正确的日期
(dd/MM/yyyy)
?DateTime.TryParseExact
适合我:
using System;
using System.Globalization;
class Test
{
static void Main()
{
string text = "23/0212014";
DateTime result;
if (DateTime.TryParseExact(text, "dd/MM'1'yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.None, out result))
{
Console.WriteLine(result);
}
else
{
Console.WriteLine("Failed to parse");
}
}
}
输出:
23/02/2014 00:00:00
(一旦将其解析为DateTime
,当然,您可以根据需要重新格式化它。)
我肯定会尝试使用这个而不是正则表达式。
DateTime.TryParseExact
对我来说很好:
using System;
using System.Globalization;
class Test
{
static void Main()
{
string text = "23/0212014";
DateTime result;
if (DateTime.TryParseExact(text, "dd/MM'1'yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.None, out result))
{
Console.WriteLine(result);
}
else
{
Console.WriteLine("Failed to parse");
}
}
}
输出:
23/02/2014 00:00:00
(一旦将其解析为DateTime
,当然,您可以根据需要重新格式化它。)
我肯定会尝试使用这个而不是正则表达式。
DateTime.TryParseExact
对我来说很好:
using System;
using System.Globalization;
class Test
{
static void Main()
{
string text = "23/0212014";
DateTime result;
if (DateTime.TryParseExact(text, "dd/MM'1'yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.None, out result))
{
Console.WriteLine(result);
}
else
{
Console.WriteLine("Failed to parse");
}
}
}
输出:
23/02/2014 00:00:00
(一旦将其解析为DateTime
,当然,您可以根据需要重新格式化它。)
我肯定会尝试使用这个而不是正则表达式。
DateTime.TryParseExact
对我来说很好:
using System;
using System.Globalization;
class Test
{
static void Main()
{
string text = "23/0212014";
DateTime result;
if (DateTime.TryParseExact(text, "dd/MM'1'yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.None, out result))
{
Console.WriteLine(result);
}
else
{
Console.WriteLine("Failed to parse");
}
}
}
输出:
23/02/2014 00:00:00
(一旦将其解析为DateTime
,当然,您可以根据需要重新格式化它。)
我肯定会尝试使用这个而不是正则表达式。“DateTime.TryParseExact不起作用”-您尝试了什么使它起作用?它总是在年前1,数据字符串的长度是10?如果字符串的当前格式是固定的,您可以很好地用“/”替换第5个字符。然后使用DateTime.TryParse(你的字符串)我不会使用正则表达式。测试第五个字符=
1
并替换为/
是第二个字符/将始终仅为1,并且正好在年份(yyyy)之前,长度始终为10。对于DateTime.TryParseExact,我的格式为:字符串[]格式={“dd/MM1yyyy”、“dd/MM/yyyy”、“dd/MMyyyy”、“ddMM/yyyy”};(检查第一个)“DateTime.TryParseExact不工作”-您尝试了什么使其工作?它总是在年前1,数据字符串的长度是10?如果字符串的当前格式是固定的,您可以很好地用“/”替换第5个字符。然后使用DateTime.TryParse(你的字符串)我不会使用正则表达式。测试第五个字符=1
并替换为/
是第二个字符/将始终仅为1,并且正好在年份(yyyy)之前,长度始终为10。对于DateTime.TryParseExact,我的格式为:字符串[]格式={“dd/MM1yyyy”、“dd/MM/yyyy”、“dd/MMyyyy”、“ddMM/yyyy”};(检查第一个)“DateTime.TryParseExact不工作”-您尝试了什么使其工作?它总是在年前1,数据字符串的长度是10?如果字符串的当前格式是固定的,您可以很好地用“/”替换第5个字符。然后使用DateTime.TryParse(你的字符串)我不会使用正则表达式。测试第五个字符=1
并替换为/
是第二个字符/将始终仅为1,并且正好在年份(yyyy)之前,长度始终为10。对于DateTime.TryParseExact,我的格式为:字符串[]格式={“dd/MM1yyyy”、“dd/MM/yyyy”、“dd/MMyyyy”、“ddMM/yyyy”};(检查第一个)“DateTime.TryParseExact不工作”-您尝试了什么使其工作?它总是在年前1,数据字符串的长度是10?如果字符串的当前格式是固定的,您可以很好地用“/”替换第5个字符。然后使用DateTime.TryParse(你的字符串)我不会使用正则表达式。测试第五个字符=1
并替换为/
是第二个字符/将始终仅为1,并且正好在年份(yyyy)之前,长度始终为10。对于DateTime.TryParseExact,我的格式为:字符串[]格式={“dd/MM1yyyy”、“dd/MM/yyyy”、“dd/MMyyyy”、“ddMM/yyyy”};(选中第一个)即使是1
周围的”
也不需要;不管怎样,它都会被视为一个文本。@Rawling:是的,但我有一个习惯,就是在日期/时间模式中对大多数文本进行排序。我认为这更清楚了。即使是1
周围的,
都是不必要的;不管怎样,它都会被视为一个文本。@Rawling:是的,但我有一个习惯,就是在日期/时间模式中对大多数文本进行排序。我认为这更清楚了。即使是1
周围的,
都是不必要的;不管怎样,它都会被视为一个文本。@Rawling:是的,但我有一个习惯,就是在日期/时间模式中对大多数文本进行排序。我认为这更清楚了。即使是1
周围的,
都是不必要的;不管怎样,它都会被视为一个文本。@Rawling:是的,但我有一个习惯,就是在日期/时间模式中对大多数文本进行排序。我想这更清楚了。