使用regex捕获字符串之间的日期的解决方案是什么



如果我想在字符串之间取日期,请有人帮我吗?

Print Date: 2011/12/23 (YYYY/MM/DD)

我只是想把日期带到这里,我需要把格式转换成DD/MM/YYYY。

如果您使用C#,此代码将执行

Regex readdate = new Regex(@"(?<Year>(?:d{4}|d{2}))/(?<Month>d{1,2})/(?<Day>d{1,2})");
Console.WriteLine(DateTime.Parse(readdate.Match("Print Date: 2011/12/23").ToString()));
Console.ReadLine();

在perl:中

$str = 'Print Date: 2011/12/23 (YYYY/MM/DD)';
$date = $str =~ s#^D+(d{4})/d{}/d{2}.*$#$3/$2/$1#;

试试这个:

public static String convertDateString(String s) {
  Pattern p = Pattern.compile("(\d{4})/(\d{2})/(\d{2})");
  Matcher m = p.matcher(s);
  if (m.find()) {
    return m.group(3) + "/" + m.group(2) + "/" + m.group(1);
  }
  return null;
}
// ...
convertDateString("2011/12/23"); // => "23/12/2011"

或者,如果你只是想"原地踏步",试试这个:

public static String convertDateString2(String s) {
  StringBuilder buf = new StringBuilder();
  Pattern p = Pattern.compile("(\d{4})/(\d{2})/(\d{2})");
  Matcher m = p.matcher(s);
  if (m.find()) {
    buf.append(s.substring(0, m.start(1)));
    buf.append(m.group(3)).append("/");
    buf.append(m.group(2)).append("/");
    buf.append(m.group(1)).append(s.substring(m.end(3)));
    return buf.toString();
  }
  return null;
}
// ...
convertDateString2("Print Date: 2011/12/23.");
// => "Print Date: 23/12/2011."

相关内容

最新更新