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
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
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:
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
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]".
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
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:
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
ahora no estoy delante de la IDE para testear, pero prueba así:
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