FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Yo lo que haría sería:
Lees y si encuentras un '<', avanzas hasta que encuentres un '>'. Empiezas a pasar chars a una string temporal hasta que vuelvas a encontrar un '<'. Si la cadena es diferente de '', entonces miro el primer char, y si es espacio, lo sustituyo. ******** Pregunta: la cadena ' algo' ¿ya serviría? Es decir, que si el primer char no es un espacio, ¿el HTML muestra lo que haya, íntegro? Después añades a la salida la cadena temporal y sigues. Un saludo |
#2
|
||||
|
||||
Interesante
¡Hola a todos!
Sin duda un asunto relativamente complejo, más no debemos complicarnos. Cita:
<Etiqueta> Cien Años De Soledad </Etiqueta> cuyo valor interno, « Cien Años De Soledad », tiene dos espacios de prefijo y dos de sufijo, ¿bastaría dejarla así?: <Etiqueta> Cien Años De Soledad </Etiqueta> ¿o sería necesario dejarla así?: <Etiqueta> Cien Años De Soledad </Etiqueta> Me inclino a pensar que con un sólo « » de cada lado bastaría, como en la primera opción. Haré una prueba y enseguida regreso. Un favor: ¿podrían insertar algunos saltos de línea en sus mensajes para mejor apreciación del tema en resolución de 800 X 600 pixeles? Gracias. Al González. Última edición por Al González fecha: 25-04-2005 a las 03:48:45. |
#3
|
||||
|
||||
HTMLEspaciado
¡Hola de nuevo!
Comprobé que si es necesario un « » por cada espacio del prefijo y del sufijo del valor String que se encuentra entre etiquetas. Juan: Desarrollé una función de nombre HTMLEspaciado que nos permite solucionar este tipo de casos. He aquí el código: NOTA: En la línea «Result := ANSIReplaceStr...» separé la expresión ' ' en dos partes, para evitar un problema de interpretación HTML encontrado al exponer dicha expresión en formato de código Delphi. Para su utilización real no es necesario que dicha expresión esté separada. La función HTMLEspaciado asume que todos los símbolos de menor que (<) y mayor que (>) de la cadena dada son delimitadores de etiquetas HTML, y ninguno de ellos parte de un valor que literalmente contenga esos símbolos, ya que para ello se utilizan los códigos especiales «<» y «>». Realicé varias pruebas. En una de ellas introduzco la cadena '<Etiqueta de prueba> Cien Años De Soledad </Etiqueta de prueba>' en Edit1, con dos espacios a cada lado de la subcadena 'Cien Años De Soledad'. Al oprimir el botón Button1, queda en Edit2 la cadena resultante '<Etiqueta de prueba> Cien Años De Soledad </Etiqueta de prueba>'. Es posible que tengamos que hacer más pruebas, o añadir funcionalidad extra a la rutina, pero creo que por lo pronto tenemos un avance importante. Estoy considerando incluir esta función en la biblioteca Interfaz GH, porque me parece una necesidad relativamente común esto de "espaciar" valores HTML. Espero esto sea de utilidad, seguimos en contacto. Al González. |
#4
|
||||
|
||||
Continuidad al caso
¡Hola a todos!
Juan: Me quedé con la duda de si te sirvió la función que escribí, o de qué forma solucionaste el problema planteado. ¿Podrías compartir con nosotros tus avances al respecto? Por favor. Gracias. Seguimos en contacto. Al González. |
#5
|
||||
|
||||
Hola Al! Ante todo, mil disculpas a todos por lo que demoré en responder.
Traté de usar tu función pero no me funcionó, creo que porque uso Delphi 5 (no me encontraba la librería strutils; la q descubrí que se halla en las librerías rxlib - pero la versión de Delphi 5 de estas no traían la procedure de ANSIReplaceStr). Igualmente, gracias a las ideas q uds. aportaron, se me ocurrió hacerlo de esta forma: 1) Leo cada línea del HTML con un for, y busco caracter='>' y caracter[i+1]=' '. 2) En una variable guardo la posición donde se encuentra el primer ' ' (la llamé istart) y voy buscando a ver si los siguientes también son espacio, cada vez q pasa guardo la posición en iend (al final va a tener la posición del último espacio antes de la primer letra). 3) Corto el string en dos, y los guardo en archivos temporales: Uno es desde el principio del string hasta la posición del último caracter antes del espacio, otro es desde el último espacio hasta el final del string ( Length(String) ). 4) Me olvidé de decir antes que guardé la cantidad de espacios en otra variable, asi que hago lo siguiente: En otro string mas [i]pego la primer parte, luego inserto tantos ' ' como el contador de espacios tenga, luego pego la segunda parte que tenía cortada. Es básicamente eso. Seguramente se puede hacer de forma más eficiente, sin tantos strings temporales y código; pero bueno, lo fuí haciendo sobre la marcha, funciona bastante rápido.... aparte soy medio cavernícola para programar!!! Bueno, les muestro la parte del código que hice, les agradezco infinitamente a todos por su tiempo. Aquí va:
Saludos!!!!!!
__________________
www.myspace.com/theswinginspecials Última edición por JuanBCT fecha: 29-04-2005 a las 22:26:04. Razón: 'horror' ortográfico |
#6
|
||||
|
||||
¡Buen día a todos!
Cita:
Para compilarlo en Delphi 5, creo que bastaría susituir la llamada a ANSIReplaceStr por alguna otra función que sirva para reemplazar subcadenas, como StringReplace (no recuerdo si viene en Delphi 5) o alguna otra. Cita:
Gracias por mantenernos informado. ¡Un abrazo! Al González. P.D. ¿Podrían insertar algunos saltos de línea para leer adecuadamente este hilo en resolución de 800 X 600 pixeles? Gracias. |
#7
|
||||
|
||||
Te resulto muy dificil lo de las expresiones regulares? Era solo cuestion de bajar un componente y dos lineas/tres a lo sumo de codigo.... y cubre mas casos que las funciones a mano expuestas...
__________________
El malabarista. |
|
|
|