Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用C正则表达式屏蔽日期中的月份值_C#_Regex - Fatal编程技术网

C# 如何使用C正则表达式屏蔽日期中的月份值

C# 如何使用C正则表达式屏蔽日期中的月份值,c#,regex,C#,Regex,假设我的日期字符串值是25-12-1993,我只想将月份值隐藏为25-1993,如果日期字符串是25-Mar-1993,我需要使用C正则表达式显示25-1993 这会在两个连字符之间找到一个介于01和12之间的两位数,并用两个连字符之间的两个哈希符号替换。@jdweng解决方案是最好的,但这里是正则表达式解决方案 DateTime date = DateTime.ParseExact("25-12-1993", "dd-MM-yyyy",System.Globalization.CultureI

假设我的日期字符串值是25-12-1993,我只想将月份值隐藏为25-1993,如果日期字符串是25-Mar-1993,我需要使用C正则表达式显示25-1993


这会在两个连字符之间找到一个介于01和12之间的两位数,并用两个连字符之间的两个哈希符号替换。

@jdweng解决方案是最好的,但这里是正则表达式解决方案

DateTime date = DateTime.ParseExact("25-12-1993", "dd-MM-yyyy",System.Globalization.CultureInfo.InvariantCulture);
string output = Regex.Replace(date.ToShortDateString(), @"(\/\d{2}\/)+", "-##-", RegexOptions.CultureInvariant);
输出:

25-##-1993

只有将日期时间用作字符串时,才能实现这一点,但如果您试图在datetime对象中使用它,则不可能实现。您好,我将日期值用作字符串,而不是datetime对象使用ToString:datetime date=datetime.ParseExact25-12-1993,dd MM yyyy,System.Globalization.CultureInfo.InvariantCulture;字符串输出=date.ToStringdd-yyyy;谢谢,这会起作用,但我只是想知道是否有可能使用C正则表达式进行这种掩蔽。如果用户有一个字符串25-ab-1993,它不是日期字符串,您的代码仍将替换它。是的,我知道,如果日期是1991年5月25日,如果日期字符串是1993年3月25日,我需要显示25-1993@JAMDHA法鲁斯根据他的要求,刚刚补充道。也许他以后需要对一些东西进行排序,所以我不能根据月份部分的字符数来打破它,我需要添加为什么转换为DateTime然后返回到字符串的数量?就像用正则表达式将real DateTime对象转换为字符串的示例一样。不替换其他内容如果日期字符串是1993年3月25日,我需要显示1993年3月25日
string text = "25-12-1993";
string result = Regex.Replace(text, @"-(.+?)-", "-##-");
25-##-1993