• Publicidad

Separar una frase para usar en array

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

Separar una frase para usar en array

Notapor BigBear » 2011-02-03 12:37 @567

Hola.

Ando queriendo hacer un script que use una frase para separarla letra por letra para guardar cada letra en un array.

Ejemplo
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
hola a todos
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

y el array guarde
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
@letras("h","o","l","a"," ","a"," ","t","o","d","o","s");
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Reconociendo espacios.

¿ Alguien me puede ayudar ?
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Publicidad

Re: Separar una frase para usar en array

Notapor explorer » 2011-02-03 13:25 @600

Eso está explicado en la función split():

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
@array = split //, $variable;
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: Separar una frase para usar en array

Notapor BigBear » 2011-02-03 13:57 @623

Gracias explorer , ahora quedó así
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $string = "Hola a todos";
  2.  
  3. my @intro = split("",$string);
  4.  
  5. for my $c(@intro) {
  6.  
  7. my $w="|";
  8.  
  9. if ($w == "|") {
  10. print "con | : $c\n";
  11. my $w == "/";
  12. }
  13.  
  14. if ($w == "/") {
  15. print "con / : $c\n";
  16. }
  17.  
  18. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Ahora el problema es que yo quiero que este código muestre una letra por cada signo "/" o "|" , pero el problema es que me devuelve

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
con | : H
con | : o
con | : l
con | : a
con | :
con | : a
con | :
con | : t
con | : o
con | : d
con | : o
con | : s
 
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


¿Cómo puedo hacer para que solo muestra una letra, entonces, si detecta un signo pasa a letra siguiente?
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Re: Separar una frase para usar en array

Notapor pvaldes » 2011-02-03 14:08 @630

...bueno, no me acababa de salir, hay días en que uno no está muy fino y acaba antes empezando de cero.

Parece que no has construido bien el bloque if. A ver si es algo así lo que buscas:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use strict;
  2. my $string = "Hola a | todos";
  3. my @intro = split //,$string;
  4. my $ele;
  5. foreach  $ele(@intro){
  6.       if ($ele eq "|") {print "con | : $ele\n";}
  7.       elsif ($ele eq "/") {print "con / : $ele\n";}
  8.       else {print "$ele \n";}
  9.       }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Que me da la salida siguiente:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
H
o
l
a
 
a
 
con | : |
 
t
o
d
o
s
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
pvaldes
Perlero nuevo
Perlero nuevo
 
Mensajes: 129
Registrado: 2011-01-22 12:56 @580

Re: Separar una frase para usar en array

Notapor pvaldes » 2011-02-03 15:46 @698

> ¿Cómo puedo hacer para que solo muestra una letra, entonces, si detecta un signo pasa a letra siguiente?

Ese es un enfoque distinto

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use strict;
  2. my $string = "Hola +a -todos";
  3. my @intro = split //,$string;
  4. my @intro = grep (/[a-zA-Z]/, @intro);
  5. foreach  $ele(@intro){print "$ele\n";}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
pvaldes
Perlero nuevo
Perlero nuevo
 
Mensajes: 129
Registrado: 2011-01-22 12:56 @580

Re: Separar una frase para usar en array

Notapor Leo_Gutierrez » 2011-02-03 21:37 @942

Puedes usar "next" para pasar a la próxima iteración:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $s = "Hola | a | todos";
  2. for(split(//,  $s))
  3. {
  4.         next if(/[^a-zA-Z]/);
  5.         print;
  6. }
  7.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

o algo así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $s = "Hola | a | todos";
  2. for(split(//,  $s))
  3. {
  4.         print if(/[a-zA-Z]/);
  5. }
  6.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Ojalá y sea lo que quieras, no he entendido bien la semántica de tu pregunta.
Leo_Gutierrez
Perlero nuevo
Perlero nuevo
 
Mensajes: 91
Registrado: 2008-08-20 23:38 @026


Volver a Básico

¿Quién está conectado?

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