• Publicidad

Quitar carácter '+'

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

Quitar carácter '+'

Notapor primitivo » 2013-10-28 21:30 @937

Hola, un saludo.

Quisiera eliminar el carácter '+'. Intenté hacerlo con
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $frase = "+Hola";
  2. my $linea = chr(43);
  3.  
  4. $frase =~ s/$linea//;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


pero no funcionó :S
primitivo
Perlero nuevo
Perlero nuevo
 
Mensajes: 80
Registrado: 2013-03-22 23:05 @004

Publicidad

Re: Quitar carácter '+'

Notapor explorer » 2013-10-29 05:43 @280

El fallo está, en que la interpolación de la variable $linea dentro de la expresión regular, es igual que si hubieras escrito un '+' directamente, por lo que el motor de expresiones regulares lo interpreta como un cuantificador, no como un carácter normal.

Hay varias soluciones que se me ocurren:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. # "escapando" el significado de '+' con la barra diagonal inversa
  2. $frase =~ s/\+//;
  3.  
  4. # "escapando" el '+' como un carácter peligroso
  5. $frase =~ s/\Q+//;
  6.  
  7. # '+' es un carácter normal
  8. $frase =~ s/[+]//;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
también puedes hacerlo con una variable:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $linea = '\+'            # atención: son comillas simples
  2. $linea = "\Q+";          # vale cualquiera de estas formas
  3. $linea = "[+]";
  4. $frase =~ /$linea//;
  5.  
  6. # e incluso
  7. $linea = '+';
  8. $frase =~ s/\Q$linea//;  # \Q...\E sirve para "escapar" los caracteres peligrosos
  9.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Otra forma: como el carácter está al principio de la $frase (sabemos su posición), pues podemos quedarnos con lo que nos interesa:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $frase = substr $frase, 1;     # nos quedamos con lo que hay en $frase, a partir del segundo carácter
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: Quitar carácter '+'

Notapor primitivo » 2013-10-29 12:58 @582

Me salvaste la vida. Muchas gracias, explorer.
primitivo
Perlero nuevo
Perlero nuevo
 
Mensajes: 80
Registrado: 2013-03-22 23:05 @004


Volver a Básico

¿Quién está conectado?

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