Ver Mensaje Individual
  #9 (permalink)  
Antiguo 06/06/2005, 05:23
Avatar de zacktagnan
zacktagnan
 
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 20 años, 1 mes
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.