Foros del Web » Programación para mayores de 30 ;) » .NET »

[VB.NET] Duda/Problema con Split()

Estas en el tema de [VB.NET] Duda/Problema con Split() en el foro de .NET en Foros del Web. Buenas, necesito parsear una linea un poco pero tengo un problema, primero el esquema de la linea: Código: :una_palabra!una_palabra@una_palabra una_palabra #una_palabra :TEXTO Esta linea está ...
  #1 (permalink)  
Antiguo 25/05/2008, 13:40
 
Fecha de Ingreso: julio-2004
Mensajes: 25
Antigüedad: 20 años, 4 meses
Puntos: 0
[VB.NET] Duda/Problema con Split()

Buenas, necesito parsear una linea un poco pero tengo un problema, primero el esquema de la linea:

Código:
:una_palabra!una_palabra@una_palabra una_palabra #una_palabra :TEXTO
Esta linea está en la variable Recibido. Y lo que necesito es obtener el ultimo TEXTO de la linea que viene detras de los ":"

Hasta ahi bien por que lo hago asi:
Código:
Recibido.Split(":")(2)
El problema viene cuando el texto tambien contiene ":" entonces pasaria lo siguiente:
Cita:
:una_palabra!una_palabra@una_palabra una_palabra #una_palabra :Esto es: un texto

Recibido.Split(":")(2) => Esto es
¿Como puedo solucionar eso teniendo en cuenta que en ese texto puede haber muchos ":"?

Tambien probe separando por espacios pero es una tonteria por que el ultimo texto tambien tiene espacios y pasa lo mismo...

Saludos y gracias.
  #2 (permalink)  
Antiguo 25/05/2008, 14:57
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 17 años, 2 meses
Puntos: 87
Respuesta: [VB.NET] Duda/Problema con Split()

podrias hacer un Regex.Split() en lugarl del split tradicional y capturar esos casos especificos en lugar del Simple Sting.Split()
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #3 (permalink)  
Antiguo 25/05/2008, 15:07
 
Fecha de Ingreso: julio-2004
Mensajes: 25
Antigüedad: 20 años, 4 meses
Puntos: 0
Respuesta: [VB.NET] Duda/Problema con Split()

Ahora es el momento en el que me pongo a temblar, nunca me lleve bien con el regex, y mira que lo he usado mucho... xD

Weno, gracias por la respuesta Peterpay y a ver si consigo algo.

Sigo admitiendo sugerencias xD
  #4 (permalink)  
Antiguo 26/05/2008, 00:21
 
Fecha de Ingreso: julio-2004
Mensajes: 25
Antigüedad: 20 años, 4 meses
Puntos: 0
Respuesta: [VB.NET] Duda/Problema con Split()

He usado este regex que encontre para este tipo de mensajes, pero ahora me encuentro con un problema que no habia contemplado antes:

Cita:
^(?<raw_message>\:(?<source>((?<nick>[^!]+)![~]{0,1}(?<user>[^@]+)@)?(?<host>[^\s]+)) (?<command>[^\s]+)( )?(?<parameters>[^:]+){0,1}(:)?(?<text>[^\r^\n]+)?)
Resulta que hay 2 tipos de mensajes a entender:

Cita:
1 => :nombre!identidad@host comando lugar :Texto
2 => :host comando lugar :Texto
Ambos dos saltan pero... me los separa de distinta forma:

Cita:
:[SkG][email protected] Comando #Lugar :hola: que tal

Data(0)
Data(1) [SkG]!DaRKNeSS@
Data(2)
Data(3) :
Data(4) :[SkG][email protected] Comando #Lugar :hola
Data(5) [SkG][email protected]
Data(6) [SkG]
Data(7) DaRKNeSS
Data(8) I.LoVe.MY.LiTTLe.GiRL.RiKa.NoNaKa
Data(9) Comando
Data(10) #Lugar
Data(11) hola: que tal

---

:Ichijo.Immortal-Anime.Net Comando Lugar :End of /MOTD command.

Data(0)
Data(1)
Data(2) :
Data(3) :Ichijo.Immortal-Anime.Net Comando Lugar :End of /MOTD command.
Data(4) Ichijo.Immortal-Anime.Net
Data(5) Ichijo.Immortal-Anime.Net
Data(6) Comando
Data(7) Lugar
Data(8) End of /MOTD command.
Necesito, sobretodo que los comandos lugar y texto tengan el mismo puesto en el array... ¿alguna ayudita?
  #5 (permalink)  
Antiguo 26/05/2008, 09:41
 
Fecha de Ingreso: julio-2004
Mensajes: 25
Antigüedad: 20 años, 4 meses
Puntos: 0
Respuesta: [VB.NET] Duda/Problema con Split()

Sigo igual, dejo aqui la porcion de codigo que corresponde a eso, a ver si podeis echarme una mano.

Código:
Private Sub Parser(ByVal Recibido As String)

    Dim IRCRegex As String =
"^(?<raw_message>\:(?<source>((?<nick>[^!]+)![~]{0,1}(?<user>[^@]+)@)?(?<host>[^\s]+))
(?<command>[^\s]+)(
)?(?<parameters>[^:]+){0,1}(:)?(?<text>[^\r^\n]+)?)"

    Dim DataR As Match = Regex.Match(Recibido, IRCRegex)

    If DataR.Success Then

        Dim Data() As String = Regex.Split(Recibido, IRCRegex)

        [...Un monton de codigo que usa los datos del array Data..]

    End If

End Sub
Saludos

Última edición por [SkG]; 26/05/2008 a las 09:50
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:55.