Какое решение для этого, чтобы захватить дату между строкой с помощью регулярных выражений? - PullRequest
0 голосов
/ 30 января 2012

Пожалуйста, кто-нибудь может мне помочь, если я захочу взять дату между строкой?

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

Я просто хотел взять здесь дату, и мне нужно преобразовать формат в ДД / ММ / ГГГГ.

Ответы [ 3 ]

1 голос
/ 30 января 2012

В perl:

$str = 'Print Date: 2011/12/23 (YYYY/MM/DD)';
$date = $str =~ s#^\D+(\d{4})/\d{}/\d{2}.*$#$3/$2/$1#;
1 голос
/ 30 января 2012

Этот код подойдет .. если вы используете 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();
0 голосов
/ 30 января 2012

Попробуйте это:

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."
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...