• Publicidad

Complementar cadenas

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Complementar cadenas

Notapor ricar » 2012-06-22 05:11 @257

Hola a todos.

Quería preguntar si se os ocurre alguna forma "sencilla" para complementar cadenas (strings).

Me explico. Imaginemos que tenemos dos variables $A y $B: $A = (AA,BB,CC,RICAR), $B = (X,33,,RICAR) y quiero obtener el siguiente resultado: (AAX,BB33,CC,RICAR).

Con esto quiero decir que determinados campos quiero que se complementen y otros no.

Saludos,
Ricar.
ricar
Perlero nuevo
Perlero nuevo
 
Mensajes: 71
Registrado: 2009-07-13 07:29 @353

Publicidad

Re: Complementar cadenas

Notapor explorer » 2012-06-22 06:12 @300

¿Y qué reglas hay que aplicar a cada caso?
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: Complementar cadenas

Notapor ricar » 2012-06-22 07:48 @367

Hola, explorer.

Pues, por ejemplo, que complemente el primer campo de las variables $A y $B y tercer campo de las mismas variables. Un campo se delimita por ",".

Yo creo que voy a hacerlo con split(). Aprovecho y lanzo otra pregunta: ¿se puede hacer un split() directo?, quiero decir, si quisiera coger el tercer campo directamente y teniendo en cuenta que la "," es el único valor seguro, ¿podría indicarle al split() que escoja lo que hay en la 3ª coma, por ejemplo? (¿me he explicado?)

Saludos,
Ricar.
ricar
Perlero nuevo
Perlero nuevo
 
Mensajes: 71
Registrado: 2009-07-13 07:29 @353

Re: Complementar cadenas

Notapor explorer » 2012-06-22 11:31 @521

ricar escribiste:Pues, por ejemplo, que complemente el primer campo de las variables $A y $B y tercer campo de las mismas variables. Un campo se delimita por ",".
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $A = 'AA,BB,CC,RICAR';
  2. my $B = 'X,33,,RICAR';
  3.  
  4. my @A = split /,/, $A;
  5. my @B = split /,/, $B;
  6.  
  7. $A[0] = $A[0] . $B[0];
  8. $A[2] = $A[2] . $B[2];
  9.  
  10. my $resultado = join ',', @A;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


ricar escribiste:¿se puede hacer un split() directo?, quiero decir, si quisiera coger el tercer campo directamente y teniendo en cuenta que la "," es el único valor seguro, ¿podría indicarle al split() que escoja lo que hay en la 3ª coma, por ejemplo? (¿me he explicado?)
No, split() no tiene esa posibilidad... pero ¡esto es Perl! así que es posible hacerlo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $tercer_campo = (split /,/, $A)[2];
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Explicación: split() devuelve una lista de valores con todos los campos partidos. Esa lista está "rodeada" por unos paréntesis, para "agruparlos". Y ya que tenemos una lista "de algo", podemos extraer su tercer elemento igual a como si fuese un array del que sacamos su tercer valor.
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


Volver a Intermedio

¿Quién está conectado?

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