Página 1 de 1

Complementar cadenas

NotaPublicado: 2012-06-22 05:11 @257
por ricar
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.

Re: Complementar cadenas

NotaPublicado: 2012-06-22 06:12 @300
por explorer
¿Y qué reglas hay que aplicar a cada caso?

Re: Complementar cadenas

NotaPublicado: 2012-06-22 07:48 @367
por ricar
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.

Re: Complementar cadenas

NotaPublicado: 2012-06-22 11:31 @521
por explorer
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.