Ayuda para separar estas cadenas...

Iniciado por Charlie BoT, 30 Octubre 2020, 10:51 AM

0 Miembros y 1 Visitante están viendo este tema.

Charlie BoT

Estoy buscando la manera de ordenar una lista de servidores que aloja una web, el problema es que la manera en que se muestra esta lista es horrible, pero existe un librería que se las arregla para ordenarla a la perfección y yo realmente no he dado con la vuelta de como hacerlo.

EDITO "Se que la los campos se pueden dividir por el punto y coma ( ; ), lo que me complica es el campo del país que viene pegado con el nombre del siguiente servidor y su única separación es un espacio" Como se ve es una lista dinámica, los nombre pueden tener espacios y el país puede ser dos palabras y un espacio entre ellas!

El espacio que divide el campo del nombre con el del país lo pone la pagina.. Se podría encontrar alguna diferencia en los caracteres no imprimibles? no se me ocurre otra cosa!

Lista 1: http://kaillera.com/raw_server_list.php?version=0.9
Lista 2: http://kaillera.com/raw_server_list2.php?version=0.9

Captura de un fragmento donde aparece un server y sus datos sobresaltado!


Y una captura de como la librería que maneja un emulador logra ordenarla no se como...



Bueno sin mas que decir si alguien me pueda dar un razonamiento para este problema le estaré agradecido...

PD: (No pido código, solo ideas!)

FFernandez

SPLIT ";"

Obtienes 3 campos por servidor a vista de pajaro.

Luego trabajas los campos  y ordena la información.

Danielㅤ

Hola, hacer eso es muy fácil, el caracter separador de datos es el ; (punto y coma), haciendo como dijo el compañero un Split(";") vas a poder ordenar tal como lo hace ese programa.


Saludos
¡Regresando como cual Fenix! ~
Bomber Code © 2021 https://www.bombercode.net/foro/

Ayudas - Aportes - Tutoriales - Y mucho mas!!!

Charlie BoT

Gracias por sus sugerencias, cree la pregunta minutos antes de salir a trabajar y no redacte bien el escenario, como menciono en la edición, no tengo problema en dividirla solo que el campo del país junto con el nombre del siguiente servidor se juntan y se separan por un espacio, pero tanto el país como el nombre del servidor podrían poseer espacios, así que no podría valerme de los espacios para dividirlo ya que podría romper el nombre o el país!

EdePC

Saludos,

El HTML lo muestra de esa manera porque no interpreta los saltos de línea, sin embargo los datos en bruto son:

CitarUltimate Cup
151.248.126.219:27888;4/400;1;Russia Moscow
EFECTO FM - Spain Kaillera Server
78.136.107.189:27888;3/50;1;Madrid
SSB64 Australia 1
45.63.29.150:27888;0/64;0;Australia
Emuparadise America Kaillera Server
199.101.98.242:27888;10/100;4;USA
2Many server - Europe/France
91.121.3.197:27888;2/50;1;Europe

- Como puedes ver, la primera línea corresponde al Nombre del Servidor, luego inmediatamente después vienen los datos de ese Servidor, y así con los demás.

- Entonces dependerá de que revises como obtienes los datos y revisarlos para ver como trae, deberían de ser en bruto.

Danielㅤ

#5
No, no es complicado, vos primero tenes que dividir por el ; y después cuando tengas que separar el pais y nombre de servidor es fácil, ya que el país siempre es una sola palabra y siempre es la primera.


Saludos
¡Regresando como cual Fenix! ~
Bomber Code © 2021 https://www.bombercode.net/foro/

Ayudas - Aportes - Tutoriales - Y mucho mas!!!

Charlie BoT

HA bueno, gracias por la observación...
Yo hice una función para descargar la lista con webrequest  leyendo con stream y salvando en un string y al parecer que pierdo ese salto de linea y es por eso que no lo vi...

Así descargo mi lista


Private Function DescargarLista() As String()
    Dim myWebRequest As WebRequest = WebRequest.Create(laUrl)
    Dim myResponse As WebResponse = myWebRequest.GetResponse()
    Dim lector As New StreamReader(myResponse.GetResponseStream())
    Dim lista As String = lector.ReadToEnd()
    Return lista
End Function

TextBox1.Text = DescargarLista()



No sabría como evitar perder ese salto de linea, pero ya tengo una pista!

EdePC

Si que obtienes los datos en bruto en lista, debes trabajarlo desde ahí porque si lo mandas a un TextBox simple no ves lo que deberías ver.

- Si le pones un Break Point en End Function podrás inspeccionar el contenido de lista, en bruto debe darte:

Citar"Ultimate Cup" & vbLf & "151.248.126.219:27888;25/400;10;Russia Moscow" & vbLf & "EFECTO FM - Spain Kaillera Server" & vbLf & "78.136.107.189:27888;2/50;1;Madrid" & vbLf & "SSB64 Australia 1" & vbLf & "45.63.29.150:27888;0/64;0;Australia" & vbLf & "Emuparadise America Kaillera Server" & vbLf & "199.101.98.242:27888;10/100;4;USA" & vbLf & "2Many server - Europe/France" & vbLf & "91.121.3.197:27888;4/50;2;Europe" & vbLf & "Mortal Kombat War Room" & vbLf & "208.94.244.66:27888;1/50;0;Kansas City" & vbLf & "Phantasia" & vbLf & "145.239.124.250:27888;0/900;0;France" ...

-- Entonces trabaja directamente con lista para Separar mediante el vbLf que representa el salto de línea y luego por los ;, esto cada dos líneas.

Charlie BoT

#8
Cita de: EdePC en 31 Octubre 2020, 15:26 PM
Si que obtienes los datos en bruto en lista, debes trabajarlo desde ahí porque si lo mandas a un TextBox simple no ves lo que deberías ver.

- Si le pones un Break Point en End Function podrás inspeccionar el contenido de lista, en bruto debe darte:

-- Entonces trabaja directamente con lista para Separar mediante el vbLf que representa el salto de línea y luego por los ;, esto cada dos líneas.

Bueno amigo, ya con tu comentario ha sido todo... Me faltaba ese empujón para lograrlo y fuiste de gran ayuda!
Te agradezco mucho tu tiempo y muchísimas gracias!
Dejo una captura  mostrando tu consejo funcionando....