Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: igustin10 en 21 Diciembre 2016, 06:44 am



Título: MANEJO DE STRINGS EN VB.NET
Publicado por: igustin10 en 21 Diciembre 2016, 06:44 am
Hola a todos!!

Les queria pedir una ayudita basica ya que no manejo mucho estelenguaje y tengo que hacer un trabajo (trabajo en Python). Aqui va:

1°) Tengo un textbox con texto y quiero hacer un split para que me añada cada palabra del textbox a una lista.
textbox.text = "hola como te va"
lista = {"hola", "como", "te", "va"}


2°) Buscar EN QUE POSICION está cierta palabra en la lista. Ejemplo:
lista = {"a1", "b2", "c3"}
posicion = lista.find(b2) --> probe con indexof pero index me dice la posicion en la str. En este caso me devuelve 0 pero yo quiero que me diga que esta EN LA POSICION DE LA LISTA, no de la str.
msgbox(posicion) --> salga 1 (la cuenta comienza en 0)

3°) Buscar valor por posicion
lista = {"a1", "b2", "c3"}
valor = lista[1] --> la cuenta comienza del 0 por lo tanto que me devuelva b2.

Realmente agradeceria la ayuda!! Muchas gracias!


Título: Re: MANEJO DE STRINGS EN VB.NET
Publicado por: Eleкtro en 21 Diciembre 2016, 07:35 am
Hola. En el foro de programación hay unas normas, debes usar las etiquetas GeShi para insertar código.

1°) Tengo un textbox con texto y quiero hacer un split para que me añada cada palabra del textbox a una lista.
textbox.text = "hola como te va"
lista = {"hola", "como", "te", "va"}

Puedes usar la función String.Split() para crear un Array, y seguidamente la extensión de método Enumerable.ToList() para convertirlo a una Lista:

Código
  1. Dim str As String = "Hello World"
  2. Dim lst As List(Of String) = str.Split(" "c).ToList()

  • String.Split() - MSDN (https://msdn.microsoft.com/en-us/library/system.string.split%28v=vs.110%29.aspx)
  • Enumerable.ToList(Of T) - MSDN (https://msdn.microsoft.com/en-us/library/bb342261%28v=vs.100%29.aspx)



2°) Buscar EN QUE POSICION está cierta palabra en la lista. Ejemplo:
lista = {"a1", "b2", "c3"}
posicion = lista.find(b2) --> probe con indexof pero index me dice la posicion en la str. En este caso me devuelve 0 pero yo quiero que me diga que esta EN LA POSICION DE LA LISTA, no de la str.
msgbox(posicion) --> salga 1 (la cuenta comienza en 0)

Puedes usar la función List.IndexOf() y List.FindIndex() dependiendo de tus necesidades:

Código
  1. Dim lst As New List(Of String) From {"Hello", "World"}
  2. Dim idx As Integer = lst.IndexOf("Hello") ' Case Sensitive

Código
  1. Dim idx As Integer = lst.FindIndex(Function(s As String) s.Equals("HELLo", StringComparison.OrdinalIgnoreCase)) ' Ignore Case

  • List(Of T).IndexOf() - MSDN (https://msdn.microsoft.com/en-us/library/8bd0tetb%28v=vs.110%29.aspx)
  • List(Of T).FindIndex() - MSDN (https://msdn.microsoft.com/en-us/library/0k601hd9%28v=vs.110%29.aspx)



3°) Buscar valor por posicion
lista = {"a1", "b2", "c3"}
valor = lista[1] --> la cuenta comienza del 0 por lo tanto que me devuelva b2.

Simplemente reemplaza los corchetes [...] por paréntesis (...):

Código
  1. Dim lst As New List(Of String) From {"Hello", "World"}
  2. Dim itm As String = lst(0)

O también:
Código
  1. Dim item As String = lst.Item(0)

¡Saludos!


Título: Re: MANEJO DE STRINGS EN VB.NET
Publicado por: igustin10 en 21 Diciembre 2016, 15:49 pm
Muchisimas gracias Elektro por tu respuesta!!

Quedo todo solucionado, un genio!!  :D :D

Saludos,

Igustin!