2 delimitadores para obtener texto (vb.net)

Iniciado por <housedir>, 22 Julio 2013, 07:30 AM

0 Miembros y 2 Visitantes están viendo este tema.

<housedir>

hola a todos, esto es algo que me parece muy simple pero que vb.net como que lo hace dificil o complicado, ya intente con ubound y lbound pero no logre hacer lo que quiero, lo que deseo es lo siguiente, supongamos que tengo este texto en un textbox:

hola a todos <inicio>bienvenidos[fin] adios

lo que quiero obtener es "bienvenidos", cabe mencionar que el texto "bienvenidos" siempre va a variar, lo unico que siempre sera igual son los delimitadores <inicio> y [fin], saludos y gracias por su ayuda
Titulo: Padre nuestro
Padre Nuestro que estás en www.cielo.com
Santificado sea tu server, venga a nosotros tu shareware
Hágase tu downloading así en el http como en el ftp
Danos hoy nuestro surfing de cada día,
Perdona nuestros bugs
como nosotros también perdonamos a Microsoft.
No nos dejes caer en una Mac y líbranos de todo worm.
Enter...

Eleкtro

#1
Cita de: <housedir> en 22 Julio 2013, 07:30 AMesto es algo que me parece muy simple pero que vb.net como que lo hace dificil o complicado

Disculpa si me equivoco pero por tu comentario me parece que desconoces una cosa muy importante de la programación, es la forma más idonea de hacerlo y compatible con el 99% de lenguajes,
Son las expresiones regulares:

http://en.wikipedia.org/wiki/Regular_expression
http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex%28v=vs.110%29.aspx

Código (vbnet) [Seleccionar]
       Dim str As String = "hola a todos <inicio>bienvenidos[fin] adios"
       Dim [RegEx] As New System.Text.RegularExpressions.Regex("<inicio>(.*)\[fin\]")
       MsgBox([RegEx].Match(str).Groups(1).ToString)
       ' Result: "bienvenidos"



EDITO:
Los RegEx te sirven para cualquier circunstancia, no recomiendo usar otra forma como por ejemplo replaces o splits o funciones de VB6 como "InStr, Left, Split", pero si quieres algo de eso puedes hacer esto otro:

Código (vbnet) [Seleccionar]
       Dim str As String = "hola a todos <inicio>bienvenidos[fin] adios"
       Dim delimiter1 As String = "<inicio>", delimiter2 As String = "[fin]"
       MsgBox(Split(Split(str, delimiter1)(1), delimiter2)(0))


Saludos








El Benjo

En realidad lo tienes sencillo.

Primero utiliza la función InStr() para obtener la posición donde aparece "<inicio>"
Después vuelva a utilizar esa función para obtener la posición donde aparece "[final]"
Ahora saca la utiliza la función Left() para obtener la cadena desde el primer marcador hasta el segundo. Si no entiendes bien cómo es esto te daré una pista: VariableFinal - VariableInicio
Y por último utiliza la función Replace() para eliminar "<inicio>" y "[final]".
www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.

<housedir>

Cita de: EleKtro H@cker en 22 Julio 2013, 07:53 AM
Disculpa si me equivoco pero por tu comentario me parece que desconoces una cosa muy importante de la programación, es la forma más idonea de hacerlo y compatible con el 99% de lenguajes,
Son las expresiones regulares:

http://en.wikipedia.org/wiki/Regular_expression
http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex%28v=vs.110%29.aspx

Código (vbnet) [Seleccionar]
       Dim str As String = "hola a todos <inicio>bienvenidos[fin] adios"
       Dim [RegEx] As New System.Text.RegularExpressions.Regex("<inicio>(.*)\[fin\]")
       MsgBox([RegEx].Match(str).Groups(1).ToString)
       ' Result: "bienvenidos"



EDITO:
Los RegEx te sirven para cualquier circunstancia, no recomiendo usar otra forma como por ejemplo replaces o splits o funciones de VB6 como "InStr, Left, Split", pero si quieres algo de eso puedes hacer esto otro:

Código (vbnet) [Seleccionar]
       Dim str As String = "hola a todos <inicio>bienvenidos[fin] adios"
       Dim delimiter1 As String = "<inicio>", delimiter2 As String = "[fin]"
       MsgBox(Split(Split(str, delimiter1)(1), delimiter2)(0))


Saludos

Muchas gracias por tu ayuda, si las conozco pero se me hace un poco confuso usar las expresiones regulares, en realidad los delimitadores son "<div class="lo que sea">" y "</div>" de un codigo html, quisiera sacar el contenido de ese div pero no se como colocar las expresiones en vb.net
Titulo: Padre nuestro
Padre Nuestro que estás en www.cielo.com
Santificado sea tu server, venga a nosotros tu shareware
Hágase tu downloading así en el http como en el ftp
Danos hoy nuestro surfing de cada día,
Perdona nuestros bugs
como nosotros también perdonamos a Microsoft.
No nos dejes caer en una Mac y líbranos de todo worm.
Enter...

Eleкtro

ahora no estoy delante de la IDE para testear, pero prueba así:

Código (vbnet) [Seleccionar]
Dim [RegEx] As New System.Text.RegularExpressions.Regex( _
<a><![CDATA[<div class=\"lo que sea\">(.*)<\/div>]]></a>.Value))


...Y matcheas el grupo 1.

Aquí tienes otros ejemplos que te servirán:
http://foro.elhacker.net/net/libreria_de_snippets_posteen_aqui_sus_snippets-t378770.0.html;msg1856865#msg1856865