• Publicidad

Convertir mayúsculas a minúsculas y viceversa

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

Convertir mayúsculas a minúsculas y viceversa

Notapor jcarranza » 2010-04-21 02:26 @143

¡¡Hola!!

Me gustaría programar un script que convirtiera las mayúsculas a minúsculas y viceversa.

HoLa qUe TAl-> hOlA QuE taL

¿Cómo detectar si un carácter está en mayúsculas o en minúsculas?

¡¡Saludos!!
jcarranza
Perlero nuevo
Perlero nuevo
 
Mensajes: 44
Registrado: 2010-04-20 05:00 @250

Publicidad

Re: Convertir mayúsculas a minúsculas y viceversa

Notapor explorer » 2010-04-21 04:11 @216

Primero deberíamos saber en qué codificación estamos trabajando... lo que es mayúsculas y minúsculas depende de la localización que estemos usando.

Si, por ejemplo, la cadena se compone de bytes, en codificación iso-8859-1 o latin1 o familiar, se podría hacer sencillo como esto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use diagnostics;
  5.  
  6. my $cadena = 'HoLa qUe TAl';
  7.  
  8. print "$cadena\n";
  9.  
  10. for (split//,$cadena) {         # para cada cadena
  11.     if (/[[:alpha:]]/) {        # si es carácter alfabético (en iso-8859-1)
  12.         $_ ^= chr 0x20;         # invertimos el bit 6, ya que hay una diferencia
  13.                                 # de 32 caracteres entre las mayúsculas y las minúsculas
  14.     }
  15.     print;                      # y pintamos el resultado
  16. }
  17.  
  18. print "\n";
  19.  
  20. __END__
  21. HoLa qUe TAl
  22. hOlA QuE taL
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

El problema es que esta solución no es muy portable, entre distintas codificaciones.
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

Re: Convertir mayúsculas a minúsculas y viceversa

Notapor jcarranza » 2010-04-21 06:50 @326

Me ha gustado, lo he probado y funciona.

En estos momentos soy un usuario Perl muy básico y por ello te pido resolver lo siguiente: quiero meter la conversión en una variable y no usar la variable especial $_. Otra forma es meter el resultado obtenido en una variable. ¿Cómo lo hago?

Tengo esto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl -w
  2.  
  3. system("cls");
  4.  
  5. print "Introduczca una cadena: ";
  6. $cadena=<STDIN>;
  7.  
  8. print "$cadena\n";
  9.  
  10. for (split//,$cadena) {         # para cada cadena
  11.     if (/[[:alpha:]]/) {        # si es carácter alfabético (en iso-8859-1)
  12.         $_ ^= chr 0x20;         # invertimos el bit 6, ya que hay una diferencia
  13.                                 # de 32 caracteres entre las mayúsculas y las minúsculas
  14.     }
  15.     print;                      # y pintamos el resultado
  16. }
  17.  
  18. print "\n";
  19.  
  20. print "Pulse INTRO para continuar";
  21. $nada=<STDIN>;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
jcarranza
Perlero nuevo
Perlero nuevo
 
Mensajes: 44
Registrado: 2010-04-20 05:00 @250

Re: Convertir mayúsculas a minúsculas y viceversa

Notapor explorer » 2010-04-21 07:45 @365

Pues nada... se define una variable, y se usa
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $resultado;
  2.  
  3. for (split//,$cadena) {         # para cada cadena
  4.     if (/[[:alpha:]]/) {        # si es carácter alfabético (en iso-8859-1)
  5.         $_ ^= chr 0x20;         # invertimos el bit 6, ya que hay una diferencia
  6.                                 # de 32 caracteres entre las mayúsculas y las minúsculas
  7.     }
  8.     $resultado .= $_;           # y guardamos el resultado
  9. }
  10. print "[$resultado]\n";
  11.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
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

Re: Convertir mayúsculas a minúsculas y viceversa

Notapor jcarranza » 2010-04-21 10:38 @485

Muchas gracias. Aquí dejo el código completo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl -w
  2.  
  3.  
  4.  system("cls");
  5.  
  6.  print "Introduczca una cadena: ";
  7. $cadena=<STDIN>;
  8.  
  9.  
  10. for (split//,$cadena) {         # para cada cadena
  11.     if (/[[:alpha:]]/) {        # si es carácter alfabético (en iso-8859-1)
  12.         $_ ^= chr 0x20;         # invertimos el bit 6, ya que hay una diferencia
  13.                                 # de 32 caracteres entre las mayúsculas y las minúsculas
  14.     }
  15.     $resultado .= $_;                     # y pintamos el resultado
  16. }
  17.  
  18. print "La cadena convertida es: $resultado";
  19. print "\n";
  20.  
  21. print "Pulse INTRO para continuar";
  22. $nada=<STDIN>;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
jcarranza
Perlero nuevo
Perlero nuevo
 
Mensajes: 44
Registrado: 2010-04-20 05:00 @250


Volver a Básico

¿Quién está conectado?

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