Как я могу изменить порядок подстрок в строке? - PullRequest
3 голосов
/ 07 января 2010

Как мне выполнить следующее преобразование в регулярное выражение в Perl?

British style   US style
"2009-27-02" => "2009-02-27"

Я новичок в Perl и мало знаю о регулярных выражениях, все, что я могу придумать, - это извлечь различные части "-", а затем заново объединить строку, так как мне нужно выполнить преобразование на лету, Я чувствовал, что мой подход будет довольно медленным и безобразным.

Ответы [ 3 ]

13 голосов
/ 07 января 2010
use strict;
use warnings;
use v5.10;

my $date = "2009-27-02";
$date =~ s/(\d{4})-(\d{2})-(\d{2})/$1-$3-$2/;
say $date;
5 голосов
/ 08 января 2010

Вы спрашивали о регулярном выражении, но для такой очевидной замены вы могли бы также составить функцию split и parse. На моей машине это примерно на 22% быстрее:

my @parts = split '-', $date;
my $ndate = join( '-', @parts[0,2,1] );

Также вы можете хранить различные заказы, например:

my @ymd = qw<0 2 1>;
my @mdy = qw<2 1 0>;

И их можно использовать так же, как буквальную последовательность в первом разделе:

my $ndate = join( $date_separator, @date_parts[@$order] );

Просто идея для рассмотрения.

4 голосов
/ 07 января 2010

Вы также можете использовать Date :: Parse для чтения и преобразования дат. См. этот вопрос для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...