none
Separar cadenas de texto dentro de un archivo de texto

    Pregunta

  • Hola!

    Hace mucho que no programo en vb.net y la verdad es que estoy bastante oxidado y necesito ayuda para hacer una cosa.

    Necesito abrir un archivo de texto con esta estructura:

    <VirtualHost *:80>
        DocumentRoot "/directorios/de/prueba"
        ServerName lorem.com
    </VirtualHost>
    <VirtualHost *:80>
        DocumentRoot "/directorios/de/prueba2"
        ServerName ipsum.com
    </VirtualHost>

    Y que me lo coloque en un array de la siguiente forma:

    array[0]="/directorios/de/prueba::lorem.com"
    array[1]="/directorios/de/prueba::ipsum.com"

    Algo así, para que yo pueda manipular los valores fácilmente, separándolos después con esos dos puntos dobles que dejé en el medio.

    A ver si alguien puede echarme un cable, un saludo y mil gracias!

    lunes, 3 de octubre de 2016 21:42

Respuestas

  • No veo ninguna solución "simple" que te lo haga de golpe sin programar nada o casi nada. Si lo tuviera que hacer yo, aprovecharía que el fichero tiene aspecto de XML y lo cargaría en un XmlDocument. Después haría un SelectNodes que me devuelva los elementos VirtualHost, y de cada uno de ellos me quedaría con el InnerText (las dos líneas que hay dentro). Esas dos líneas se pueden separar con string.Split cortando por el retorno de carro, y luego dentro de cada una volver a hacer un Split cortando por el espacio en blanco. Eso te da los fragmentos necesarios, que luego puedes concatenar interponiendo :: y enviarlos al array como querías. Son muchos pasos, pero no creo que se pueda abreviar de ninguna forma sencilla. Bueno, sí, probablemente con un enorme Regex se podría hacer todo de una vez, pero habría que tener dominadísimas las expresiones regulares para conseguirlo sin tirarse horas depurándolo.
    martes, 4 de octubre de 2016 7:02

Todas las respuestas

  • No veo ninguna solución "simple" que te lo haga de golpe sin programar nada o casi nada. Si lo tuviera que hacer yo, aprovecharía que el fichero tiene aspecto de XML y lo cargaría en un XmlDocument. Después haría un SelectNodes que me devuelva los elementos VirtualHost, y de cada uno de ellos me quedaría con el InnerText (las dos líneas que hay dentro). Esas dos líneas se pueden separar con string.Split cortando por el retorno de carro, y luego dentro de cada una volver a hacer un Split cortando por el espacio en blanco. Eso te da los fragmentos necesarios, que luego puedes concatenar interponiendo :: y enviarlos al array como querías. Son muchos pasos, pero no creo que se pueda abreviar de ninguna forma sencilla. Bueno, sí, probablemente con un enorme Regex se podría hacer todo de una vez, pero habría que tener dominadísimas las expresiones regulares para conseguirlo sin tirarse horas depurándolo.
    martes, 4 de octubre de 2016 7:02
  • Suena genial lo que dices, voy a echarle un ojo y te comento algo.

    Un saludo y muchas gracias!

    martes, 4 de octubre de 2016 17:50
  • Efectivamente me ha servido de mucho, muchas gracias!
    miércoles, 5 de octubre de 2016 4:32