• Publicidad

Sustitución de formato de fechas

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Sustitución de formato de fechas

Notapor raperl » 2007-12-11 12:01 @542

¡Hola!

Soy nueva en Perl y he tenido que cambiar unas fechas con formato como
Código: Seleccionar todo
01-DEC-2010

a formato
Código: Seleccionar todo
01 Dec 2010


Lo que he hecho en Perl ha sido lo siguiente:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$date =~ s/-/ /g;
$date =~ s/JAN/Jan/;
$date =~ s/FEB/Feb/;
$date =~ s/MAR/Mar/;
$date =~ s/APR/Apr/;
$date =~ s/MAY/May/;
$date =~ s/JUN/Jun/;
$date =~ s/JUL/Jul/;
$date =~ s/AUG/Aug/;
$date =~ s/SEP/Sep/;
$date =~ s/OCT/Oct/;
$date =~ s/NOV/Nov/;
$date =~ s/DEC/Dec/;
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


Supongo que tiene que haber una manera un poco más elegante y corta de hacerlo, ya que simplemente es cambiar lo "-" por espacios y pasar a minusculas 2 letras del mes.

¿Alguien sabe como hacerlo?

¡Gracias!
raperl
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2007-12-11 11:42 @529

Publicidad

Notapor explorer » 2007-12-11 12:38 @568

Bienvenida a los foros de Perl en Español, raperl.

Sí, hay varias formas de hacerlo. Pero recuerda: aunque sean más cortas no quitan mérito a las que funcionan.

Para la parte de los guiones, puedes hacer cualquiera de estas:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$date =~ s/-/ /g;

$date =~ tr/-/ /;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Para la parte del mes, puedes hacer cualquiera de estas:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$date =~ s/([A-Z])([A-Z]+)/$1\L$2/;

$date =~ s/([A-Z]+)/ucfirst lc $1/e;

$date =~ s/(\w+)/ucfirst lc $1/ge;

$date =~ s/\B(\w+)/\L$1/g;

$date =~ s/(\w+)/\u\L$1/g;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


E incluso sin expresión regular:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
substr($date, 4, 2) = lc substr($date, 4, 2);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


O todo, en un solo paso:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$date =~ s/(\d+)-(\w)(\w+)-(\d+)/$1 $2\L$3\E $4/;

$date =~ s/-(\w)(\w+)-/ $1\L$2 /;

$date =~ s/-(\w+)-/ \u\L$1 /;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Más información en perlreref.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor raperl » 2007-12-11 17:40 @778

¡Muchas gracias!
raperl
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2007-12-11 11:42 @529


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 10 invitados