Foros del Web » Programando para Internet » ASP Clásico »

Problema con retornos de carro

Estas en el tema de Problema con retornos de carro en el foro de ASP Clásico en Foros del Web. Hola a todos. La cosa es así: tengo un formulario con un textarea donde un usuario hace copy y paste de texto de unos documentos ...
  #1 (permalink)  
Antiguo 26/09/2007, 17:03
 
Fecha de Ingreso: septiembre-2007
Mensajes: 4
Antigüedad: 17 años, 7 meses
Puntos: 0
Problema con retornos de carro

Hola a todos.
La cosa es así:
tengo un formulario con un textarea donde un usuario hace copy y paste de texto de unos documentos de word. Esa info se graba en un sqlserver.
El problema es que la gente a veces deja retornos de carro (chr(10) & chr(13)) o simplemente enters al comienzo del texto.

Esa info, luego es mostrada en una página que consulta la bd, donde los chr(10) & chr(13) son sustituidos por <br>.

Como se imaginarán, si hay muchos enters, el resultado es un texto precedido de muchisimos <br>s.

Lo que creo más sencillo es hacer un Instr que me determine la primera ocurrencia de un carácter alfanumérico en la cadena de texto del textarea, y una vez encontrada, eliminar todo lo precedente (enters, retornos de carro, espacios, etc.) y recién ahí grabarlo en la bd

El problema es que no sé como hacerlo. He buscado en todos lados y encuentro como encontrar una ocurrencia de cualquier caracter específico con Instr, mas no que éste sea un carácter alfanumérico.

Si alguien me puede iluminar, desde ya le estoy muy agradecido.
Un abrazo
  #2 (permalink)  
Antiguo 26/09/2007, 20:15
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Re: Problema con retornos de carro

¿Un simple replace no te sirve?

cadena = replace(cadena, chr(10), "")
cadena = replace(cadena, chr(13), "")
cadena = replace(cadena, "<br>", "")

Y demas caracteres que quieras reemplazar.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 27/09/2007, 05:50
 
Fecha de Ingreso: septiembre-2007
Mensajes: 4
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: Problema con retornos de carro

Muchas gracias por responder, Goldman

En realidad, no, pues tengo la necesidad de grabarlo en la base con sus correspondientes Chr(10) & Chr(13) entre medio de los bloques de texto. Lo que quiero hacer es eliminar los retornos de carro al comienzo de la cadena y guardarlos.

Por lo que estuve investigando, asp es un poco tosco a la hora de determinar con la funcion instr si un caracter es alfanumerico o no (hay que ponerle todos los caracteres para que lo detecte)

Pensé en hacer un split de la cadena de esta manera:

texto_insert =""
texto= request("text")

'aquí corto la cadena creando un array separado por los retornos de carro
texto_array = split(texto, chr(10) & chr(13))

'recorro el array
For i = 0 to ubound(texto_array)

'si lo que contiene el array es vacío, o tiene un espacio o dos, no lo tomo en cuenta
if ((texto_array(i)<>"") Or (texto_array(i)<>" ") Or (texto_array(i)<>" ")) then

'acá creo el nuevo bloque de texto, al que le agrego los retornos de carro
texto_insert = texto_insert & chr(10) & chr(13)

end if

next

Cuál es el problema con esto?? que me queda un retorno de carro al final, aparte de que el split sólo contempla los casos en los que hay "chr(10) & chr(13)", más no si aparece un chr(10) o un chr(13) sólo.

Si a alguien se le ocurre algo, genial!
  #4 (permalink)  
Antiguo 27/09/2007, 06:16
 
Fecha de Ingreso: septiembre-2007
Mensajes: 4
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: Problema con retornos de carro

Corrección:

Donde dice:
texto_insert = texto_insert & chr(10) & chr(13)

debe decir:
texto_insert = texto_insert & texto_array(i) & chr(10) & chr(13)
  #5 (permalink)  
Antiguo 27/09/2007, 08:15
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Re: Problema con retornos de carro

Fijate si esto te sirve, solamente te interesa sacarle los chr(10) y 13 si estan al prcincipio del texto verdad?

Código:
<%
Dim texto
Dim j

texto = chr(10)&chr(13)&chr(10)&chr(13)&chr(10)&chr(13)&"Este es un texto"

for j = 1 to len(texto)
    if left(texto, 1) = chr(10) or left(texto,1) = chr(13) then
	    texto = mid(texto, 2, len(texto))
    else
	    exit for   
    end if	
next
%>
<textarea rows="10" cols="30"><%Response.Write(texto)%></textarea>
Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway

Última edición por u_goldman; 27/09/2007 a las 08:26 Razón: Tenia una variable que nunca ocupaba...andaba perdida :p
  #6 (permalink)  
Antiguo 27/09/2007, 10:34
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Re: Problema con retornos de carro

¿el trim() no quita esos caracteres?


Edit: Pues no, creía que si!
__________________
...___...
  #7 (permalink)  
Antiguo 27/09/2007, 11:23
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Re: Problema con retornos de carro

Cita:
Iniciado por Al Zuwaga Ver Mensaje
¿el trim() no quita esos caracteres?


Edit: Pues no, creía que si!
Trim solo quita espacios al principio y fin de la cadena segun tengo entendido.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #8 (permalink)  
Antiguo 28/09/2007, 14:45
 
Fecha de Ingreso: septiembre-2007
Mensajes: 4
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: Problema con retornos de carro

Goldman, sos un crá!!!!

Anda bárbaro!.

Ahora, si no es demasiada molestia, es posible hacer lo mismo con enters que estén al final de la cadena??

He estado probando tu código con right en lugar de left pero se vé que estoy haciendo algo mal o no se puede hacer.
  #9 (permalink)  
Antiguo 28/09/2007, 15:45
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Re: Problema con retornos de carro

Cita:
Iniciado por Arcan Ver Mensaje
Goldman, sos un crá!!!!

Anda bárbaro!.

Ahora, si no es demasiada molestia, es posible hacer lo mismo con enters que estén al final de la cadena??

He estado probando tu código con right en lugar de left pero se vé que estoy haciendo algo mal o no se puede hacer.
No se si te lo merezcas

Código:
<%
Dim texto
Dim j

texto = "Este es un texto"&chr(10)&chr(13)&chr(10)&chr(13)&chr(10)&chr(13)

for j = len(texto) to 1 step -1
    if right(texto, 1) = chr(10) or right(texto,1) = chr(13) then
	    texto = left(texto, len(texto)-1)
    else
	    exit for   
    end if	
next
%>
<textarea rows="10" cols="30" ID="Textarea1" NAME="Textarea1"><%Response.Write(texto)%></textarea>
Por nada y salud!
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:24.