-2

输入是 1/1/0001 12:00:00 AM。在正则表达式之后,我希望输出为 1/1/0001

无法使正则表达式正常工作。任何想法>

忘记发布我失败的正则表达式

([^\s]+)

顺便说一句,我正在寻找日期转换。字符串到字符串的转换。上面的结果是 3 个单词,由 ; 分隔。

4

4 回答 4

0
string Date = "1/1/0001 12:00:00 AM";
string NewDate = Convert.ToDateTime(Date).ToShortDateString(); //note the output will be relate to local datetime format
string NewDate2 = Date.Substring(0, Date.IndexOf(' '));

首先将其转换DateTime为字符串,然后通过使用ToShortDateString()或删除空格字符之后的所有内容来转换回字符串。

于 2013-04-13T11:12:20.137 回答
0

这将是从您的输入中获取日期的正则表达式

"\\d{1}-\\d{1}-\\d{4}"
于 2013-04-13T11:12:49.943 回答
0

在您的特定情况下,RegEx 将是:

^\d{1,2}/\d{1,2}/\d{2,4}

** 这是一般的正则表达式字符串。您必须在 C#/JavaScript 等中转义反斜杠。

这将匹配 1/1/0001 或 01/01/0001 等。但也将匹配 56/56/9999!因此,在获得日期部分后,您应该进行完整性检查。

但我更愿意创建 DateTime 对象并使用 DateTime 的成员获取日期部分。

更新

如果你使用 ([^\s]+) 那么你会得到三个捕获组:

  • 0001 年 1 月 1 日
  • 12:00:00

所以你必须提取第一个捕获组,通常索引为 1:

var datePart = matchObj.Groups[1].Value // Should be "1/1/0001"
于 2013-04-13T11:10:48.783 回答
0

您可以在此字符串之后创建 DateTime 对象 - 以使用内置函数,例如 ToShortDate()

于 2013-04-13T11:08:32.030 回答