Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: Charlie BoT en 30 Octubre 2020, 10:51 am



Título: Ayuda para separar estas cadenas...
Publicado por: Charlie BoT en 30 Octubre 2020, 10:51 am
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 (http://kaillera.com/raw_server_list.php?version=0.9)
Lista 2: http://kaillera.com/raw_server_list2.php?version=0.9 (http://kaillera.com/raw_server_list2.php?version=0.9)

Captura de un fragmento donde aparece un server y sus datos sobresaltado!
(https://social.msdn.microsoft.com/Forums/getfile/1623384)

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

(https://social.msdn.microsoft.com/Forums/getfile/1623385)

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!)


Título: Re: Ayuda para separar estas cadenas...
Publicado por: FFernandez en 30 Octubre 2020, 21:08 pm
SPLIT ";"

Obtienes 3 campos por servidor a vista de pajaro.

Luego trabajas los campos  y ordena la información.


Título: Re: Ayuda para separar estas cadenas...
Publicado por: Danielㅤ en 30 Octubre 2020, 21:36 pm
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


Título: Re: Ayuda para separar estas cadenas...
Publicado por: Charlie BoT en 31 Octubre 2020, 00:57 am
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!


Título: Re: Ayuda para separar estas cadenas...
Publicado por: EdePC en 31 Octubre 2020, 03:07 am
Saludos,

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

Citar
Ultimate 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.


Título: Re: Ayuda para separar estas cadenas...
Publicado por: Danielㅤ en 31 Octubre 2020, 04:44 am
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


Título: Re: Ayuda para separar estas cadenas...
Publicado por: Charlie BoT en 31 Octubre 2020, 05:26 am
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

Código:
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!


Título: Re: Ayuda para separar estas cadenas...
Publicado por: 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:

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.


Título: Re: Ayuda para separar estas cadenas...
Publicado por: Charlie BoT en 31 Octubre 2020, 20:11 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....

(https://i.ibb.co/DGnkp1r/Preview002.png)