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

Formatear texto al sacarlo por pantalla

Estas en el tema de Formatear texto al sacarlo por pantalla en el foro de ASP Clásico en Foros del Web. Hola a todos: Teniendo una base de datos con un campo con datos del siguiente tipo: producto uno ¿Se puede hacer de alguna manera, al ...
  #1 (permalink)  
Antiguo 02/06/2005, 05:35
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años, 2 meses
Puntos: 3
Formatear texto al sacarlo por pantalla

Hola a todos:

Teniendo una base de datos con un campo con datos del siguiente tipo:

producto uno

¿Se puede hacer de alguna manera, al sacarlo por pantalla quede de la siguiente forma?

Producto Uno

Es decir que empleando cierto método ó función de ASP (no sé si de manera especial vale el Replace en estos casos) al sacarlo por pantalla vaya con el formato deseado: mayúsculas, negrita, con cierto color...

Agradezco respuestas de antemano, igual que si ya existen reseñas ya respondidas antes.

================================================== =======
zacktagnan.
  #2 (permalink)  
Antiguo 02/06/2005, 05:42
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 9 meses
Puntos: 18
con left(),right(),len() y ucase()
  #3 (permalink)  
Antiguo 02/06/2005, 05:50
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años, 2 meses
Puntos: 3
Pero ¿si no sé el tamaño del Texto?. Sólo sé que, por ejemplo, la inicial de cada palabra irá en mayúsculas y en negrita.

¿Y como se consideran los espacios para encontrar la siguiente palabra?

================================================== =======
zacktagnan.
  #4 (permalink)  
Antiguo 02/06/2005, 06:26
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 9 meses
Puntos: 18
con split()
  #5 (permalink)  
Antiguo 02/06/2005, 07:17
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 6 meses
Puntos: 144
En la biblioteca de clases, funciones y subrutinas, dejé esta función:

http://www.forosdelweb.com/showpost....9&postcount=56

Solo tienes que adaptarla para que te salga la primera inicial en negrita. El resto, ya lo hace (todas las primeras letras de cada palabra, en mayúsculas).
  #6 (permalink)  
Antiguo 02/06/2005, 11:07
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años, 2 meses
Puntos: 3
Gracias a trasgukabi y 3pies por las respuestas.

Intentaré aplicar estos métodos

Aunque la función Split() no sé exactamente como va ¿me podéis explicar ligeramente como va, qué parámetros tiene empieza a contar desde 0 ó desde 1?

Y ¿las left(), right(), len() empiezan a contar desde 0 ó desde 1?
  #7 (permalink)  
Antiguo 02/06/2005, 11:18
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 6 meses
Puntos: 144
Si te miras esa función que te decía, verás que está muy comentada (los comentarios ocupan más que la propia función en sí).
  #8 (permalink)  
Antiguo 02/06/2005, 23:02
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 9 meses
Puntos: 18
tan sólo un apunte: TODOS los arreglos (ya sea vb,c, lo que sea.....) empiezan por 0
  #9 (permalink)  
Antiguo 06/06/2005, 05:23
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años, 2 meses
Puntos: 3
Bueno, al final, realice el siguiente código para que resultara lo que yo quería. Igual le puede servir a otro.

A ver yo parto de unos datos que están insertado en la base tal que así:


PROCESADOR PENTIUM 4 CELERON 2400 Mhz.

MEMORIA DDR 256 Mb
DISCO DURO 80 Gb
GRABADORA CD - LECTOR DVD

TARJETA GRÁFICA 64 Mb
TARJETA DE RED
MONITOR CRT 17''


Y lo que quiero es que cada inicial de cada palabra aparezca, por ejemplo, en negrita, salvo en los casos que sea un número ó empiece por un número ó sea una proposición como "DE" ó sean abreviaturas como "Mhz.".
Finalmente, debe quedar así:


PROCESADOR PENTIUM 4 CELERON 2400 Mhz.

MEMORIA DDR 256 Mb
DISCO DURO 80 Gb
GRABADORA CD - LECTOR DVD

TARJETA GRÁFICA 64 Mb
TARJETA DE RED
MONITOR CRT 17''


Para que me diera este resultado, terminé programando este código:


<%

Dim vdescripOf, vLongDescr, vPosAnt, vPosActu, vPosPlus, vEspacio, vTermino, vLongTerm, vTerminoFin
vdescripOf = rs_ofertas.Fields("descripOferta")
vdescripOf = Replace(vdescripOf,vbCrLf," ** ")
vLongDescr = Len(vdescripOf) '--CANTIDAD TOTAL DE CARACTERES DEL CAMPO


vPosAnt = 0 '--POSICIÓN ANTERIOR DEL ESPACIO DE SEPARACIÓN
vPosActu = 1 '--POSICIÓN ACTUAL DEL ESPACIO DE SEPARACIÓN ENTRE PALABRAS
vPosPlus = 0 '--POSICIÓN DEL SIGNO + EN UN CASO ESPECIAL
vEspacio = "" '--ESPACIO DE SEPARACIÓN FINAL

Do Until vPosActu = 0 '--HACER HASTA QUE NO HAYA ESPACIO DE SEPARACIÓN QUE CONSIDERAR
vPosActu = Instr(vPosActu,vdescripOf," ",1)
IF (vPosActu = 0) THEN '--SI SE CUMPLE LA CONDICIÓN PRIMERA, SE SALE DEL Do '**
vTermino = Mid(vdescripOf,vPosAnt+1,vLongDescr-vPosAnt)
If (vTermino="**") Then '**REEMPLAZO ** POR <br />
vTerminoFin = Replace(vTermino,"**","<br />")
Response.Write(vTerminoFin)
Else '**REEMPLAZO ** POR <br /> - Else
if ((IsNumeric(Left(vTermino,1))) OR (IsNumeric(vTermino)) OR (vTermino="A" OR vTermino="DE" OR vTermino="Mb" OR vTermino="Mhz." OR vTermino="Gb" OR vTermino="Ghz" OR vTermino="Ghz." OR vTermino="Mbps")) Then '--CONSIDERANDO LOS CASOS EN LOS QUE NO SE PASARÁ LA INICIAL A NEGRITA
''vTermino = Replace(vTermino,vbCrLf,"<br />")
vTerminoFin = vEspacio & vTermino
vTerminoFin = Replace(vTerminoFin,"Á","&Aacute;")
vTerminoFin = Replace(vTerminoFin,"É","&Eacute;")
vTerminoFin = Replace(vTerminoFin,"Í","&Iacute;")
vTerminoFin = Replace(vTerminoFin,"Ó","&Oacute;")
vTerminoFin = Replace(vTerminoFin,"Ú","&Uacute;")
vTerminoFin = Replace(vTerminoFin,"Ñ","&Ntilde;")
Response.Write(vTerminoFin)
else
if (vTermino="(DVD+REGRABADORA)") then '--CONSIDERANDO CASO ESPECIAL
vLongTerm = Len(vTermino)
vPosPlus = Instr(1,vTermino,"+",1)
vTerminoFin = vEspacio & Left(vTermino,1) & "<span class="&""""&"negrita"&""""&">" & Mid(vTermino,2,1) & "</span>" & Mid(vTermino,3,vPosPlus-2) & "<span class="&""""&"negrita"&""""&">" & Mid(vTermino,vPosPlus+1,1) & "</span>" & Mid(vTermino,vPosPlus+2,vLongTerm) '--PASANDO LAS INICIALES DESEADAS DEL TÉRMINO A NEGRITA
vTerminoFin = Replace(vTerminoFin,"Á","&Aacute;")
vTerminoFin = Replace(vTerminoFin,"É","&Eacute;")
vTerminoFin = Replace(vTerminoFin,"Í","&Iacute;")
vTerminoFin = Replace(vTerminoFin,"Ó","&Oacute;")
vTerminoFin = Replace(vTerminoFin,"Ú","&Uacute;")
vTerminoFin = Replace(vTerminoFin,"Ñ","&Ntilde;")
Response.Write(vTerminoFin)
else '--CONSIDERANDO CASO ESPECIAL - else
vLongTerm = Len(vTermino)
vTerminoFin = vEspacio & "<span class="&""""&"negrita"&""""&">" & Left(vTermino,1) & "</span>" & Mid(vTermino,2,vLongTerm) '--PASANDO LA INICIAL DEL TÉRMINO A NEGRITA
vTerminoFin = Replace(vTerminoFin,"Á","&Aacute;")
vTerminoFin = Replace(vTerminoFin,"É","&Eacute;")
vTerminoFin = Replace(vTerminoFin,"Í","&Iacute;")
vTerminoFin = Replace(vTerminoFin,"Ó","&Oacute;")
vTerminoFin = Replace(vTerminoFin,"Ú","&Uacute;")
vTerminoFin = Replace(vTerminoFin,"Ñ","&Ntilde;")
Response.Write(vTerminoFin)
end if '--CONSIDERANDO CASO ESPECIAL - fin
end if
End If '**REEMPLAZO ** POR <br /> - Fin
exit Do
ELSE '--SE SIGUE CUMPLIENDO LA CONDICIÓN PRIMERA, POR LO QUE SE SIGUE CON EL Do '**
vTermino = Mid(vdescripOf,vPosAnt+1,vPosActu-(vPosAnt+1))
If (vTermino="**") Then '**REEMPLAZO 2 ** POR <br />
vTerminoFin = Replace(vTermino,"**","<br />")
Response.Write(vTerminoFin)
Else '**REEMPLAZO 2 ** POR <br /> - Else
if ((IsNumeric(Left(vTermino,1))) OR (IsNumeric(vTermino)) OR (vTermino="A" OR vTermino="DE" OR vTermino="Mb" OR vTermino="Mhz." OR vTermino="Gb" OR vTermino="Ghz" OR vTermino="Ghz." OR vTermino="Mbps")) Then '--CONSIDERANDO LOS CASOS EN LOS QUE NO SE PASARÁ LA INICIAL A NEGRITA
''vTermino = Replace(vTermino,vbCrLf,"<br />")
vTerminoFin = vEspacio & vTermino
vTerminoFin = Replace(vTerminoFin,"Á","&Aacute;")
vTerminoFin = Replace(vTerminoFin,"É","&Eacute;")
vTerminoFin = Replace(vTerminoFin,"Í","&Iacute;")
vTerminoFin = Replace(vTerminoFin,"Ó","&Oacute;")
vTerminoFin = Replace(vTerminoFin,"Ú","&Uacute;")
vTerminoFin = Replace(vTerminoFin,"Ñ","&Ntilde;")
Response.Write(vTerminoFin)
else
if (vTermino="(DVD+REGRABADORA)") then '--CONSIDERANDO CASO ESPECIAL
vLongTerm = Len(vTermino)
vPosPlus = Instr(1,vTermino,"+",1)
vTerminoFin = vEspacio & Left(vTermino,1) & "<span class="&""""&"negrita"&""""&">" & Mid(vTermino,2,1) & "</span>" & Mid(vTermino,3,vPosPlus-2) & "<span class="&""""&"negrita"&""""&">" & Mid(vTermino,vPosPlus+1,1) & "</span>" & Mid(vTermino,vPosPlus+2,vLongTerm) '--PASANDO LAS INICIALES DESEADAS DEL TÉRMINO A NEGRITA
vTerminoFin = Replace(vTerminoFin,"Á","&Aacute;")
vTerminoFin = Replace(vTerminoFin,"É","&Eacute;")
vTerminoFin = Replace(vTerminoFin,"Í","&Iacute;")
vTerminoFin = Replace(vTerminoFin,"Ó","&Oacute;")
vTerminoFin = Replace(vTerminoFin,"Ú","&Uacute;")
vTerminoFin = Replace(vTerminoFin,"Ñ","&Ntilde;")
Response.Write(vTerminoFin)
else '--CONSIDERANDO CASO ESPECIAL - else
vLongTerm = Len(vTermino)
vTerminoFin = vEspacio & "<span class="&""""&"negrita"&""""&">" & Left(vTermino,1) & "</span>" & Mid(vTermino,2,vLongTerm) '--PASANDO LA INICIAL DEL TÉRMINO A NEGRITA
vTerminoFin = Replace(vTerminoFin,"Á","&Aacute;")
vTerminoFin = Replace(vTerminoFin,"É","&Eacute;")
vTerminoFin = Replace(vTerminoFin,"Í","&Iacute;")
vTerminoFin = Replace(vTerminoFin,"Ó","&Oacute;")
vTerminoFin = Replace(vTerminoFin,"Ú","&Uacute;")
vTerminoFin = Replace(vTerminoFin,"Ñ","&Ntilde;")
Response.Write(vTerminoFin)
end if '--CONSIDERANDO CASO ESPECIAL - fin
end if
End If '**REEMPLAZO 2 ** POR <br /> - Fin
vPosAnt = vPosActu
vPosActu = vPosActu + 1
vEspacio = " "
END IF
Loop %>


Puede resultar algo larguillo pero funciona como quería. Puede que haya algo más sencillo...

Si a alguien le puede servir pues nada que lo disfrute y lo adapte según le convenga.

Gracias a todos por los consejos prestados.

Saludos.

================================================== =======
zacktagnan.
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 14:40.