• Publicidad

Eliminar caracteres \n en una variable

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

Eliminar caracteres \n en una variable

Notapor slopal » 2006-02-09 11:13 @509

¡Hola a todos!

Estoy intentando eliminar supuestos caracteres "\n" de una cadena que lee de un fichero y he probado a hacer esto y no me funciona:

$cadena =~ s/\n//g;

¿Alguna idea? Si imprimo la variable me aparece ese carácter como un espacio, claro... ¿Podría ser alguna otra cosa que no fuera "\n"? Los espacios los elimino bien así que un simple espacio no es...
slopal
Perlero nuevo
Perlero nuevo
 
Mensajes: 78
Registrado: 2005-11-23 11:41 @528

Publicidad

Notapor slopal » 2006-02-09 11:24 @516

Vale... antes lo pongo antes lo encuentro... Resulta que eran caracteres "\s"...

*** edito
Última edición por slopal el 2006-02-09 12:01 @542, editado 1 vez en total
slopal
Perlero nuevo
Perlero nuevo
 
Mensajes: 78
Registrado: 2005-11-23 11:41 @528

Notapor Perl user » 2006-02-09 11:56 @539

"\s" NO representa separador de cadena de caracteres, sugiero siempre checar la documentación oficial (perlre, perlrequick, perlretut, perlreref). "\s" representa caracteres de espacio, tales como tabuladores (\t), espacios en blanco, retornos de carro (\r), salto de línea (\n), y limpiar pantalla (\f).

Regards,
Marco A. Manzo
[email protected]
http://www.unixmonkeys.com/amnesiac/
Perl Programming Language
Perl user
Maestro honorario
Maestro honorario
 
Mensajes: 271
Registrado: 2004-11-03 21:11 @924

Notapor slopal » 2006-02-09 12:02 @543

Perdoooón... lo encontré en una web... lo quito entonces para no crear confusión...

Entonces, ¿quieres decir que con buscar "\s" ya busco todo lo demás "a la vez"?

Bien :)
slopal
Perlero nuevo
Perlero nuevo
 
Mensajes: 78
Registrado: 2005-11-23 11:41 @528

Notapor Perl user » 2006-02-09 12:18 @554

Así es, "\s" busca hacer coincidencia a uno de esos caracteres. "\S" busca hacer coincidencia a cualquier cosa que NO sean los caracteres de "\s".

Saludos,
Marco A. Manzo
[email protected]
http://www.unixmonkeys.com/amnesiac/
Perl Programming Language
Perl user
Maestro honorario
Maestro honorario
 
Mensajes: 271
Registrado: 2004-11-03 21:11 @924

Notapor kidd » 2006-02-09 13:20 @597

Hola.

Como comentario adicional. En Windows y UNIX los separadores de final de línea son distintos, en UNIX se usa el "\n", mientras que en Windows se usa el "\r\n".

Por ejemplo, si tenemos un formulario con un TEXTAREA y estamos recibiendo una entrada de varias líneas las cuales queremos separar y salvar por separado sin el fin de línea. En el caso que el usuario esté usando Windows al momento de mandar el formulario, debemos de quitar los carriage return aparta de los "\n".

Lo pongo nada más como nota adicional.


SALUDOS
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Re: Eliminar caracteres \n en una variable

Notapor explorer » 2006-02-09 14:16 @636

Luego entonces queda así, por ejemplo...

$cadena =~ s/[\r\n]//g;

Naturalmente, esto NO vale para quitar los finales de línea de un texto cualquiera, porque entonces quedarían "pegados" el último carácter de una línea con el primer carácter de la línea siguiente.

En ese caso, aparte de decir que hay módulos para reformatear texto, una forma de hacerlo sería así:

$texto =~ s/(\r?\n)+/ /g;
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 Básico

¿Quién está conectado?

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