RegEx转换短日期模式

时间:2014-02-21 23:20:51

标签: c# regex

我需要将(正则表达式,最好是)短日期模式字符串转换为不同格式的字符串。

例如,如果我最后有"dd/mm/yyyy",我希望看到"%d/%m/%y"。或者,如果我有"MMMM-DD-YY",我希望看到"%m-%d-%y"。换句话说,日期格式的每个部分应缩短为一个字符并以百分号为前缀。零件和分隔符的顺序必须保持不变。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

你可以用这个:

([\w])[\w]+([/-])([\w])[\w]+([/-])([\w])[\w]+

并替换为:

%$1$2%$3$4%$5

工作正则表达式示例:

http://regex101.com/r/vJ7dL1

C#

string example1 = "dd/mm/yyyy";
string example2 = "MMMM-DD-YY";

Regex rgx = new Regex(@"([\w])[\w]+([/-])([\w])[\w]+([/-])([\w])[\w]+");

string result1 = rgx.Replace(example1, "%$1$2%$3$4%$5");
string result2 = rgx.Replace(example2, "%$1$2%$3$4%$5");

Console.WriteLine(result1);
Console.WriteLine(result2);

输出:

%d/%m/%y
%M-%D-%Y

注意:您可以使用ToLower()确保M-D-Y是小写的..如果您愿意的话。