Título: Separar palabras de una frase Publicado por: abreu20011 en 21 Noviembre 2011, 05:14 am Saludos :)
Llevo un tiempo con este código que no logro que funcione "del todo" Estoy buscando una forma en la que al escribir una frase, se separan las palabras una por una, aunque mi código ahora mismo sólo funciona con la primera palabra o la ultima de una frase u.u Este es el código para sacar la primera palabra, que aunque no funciona como yo quisiera, funciona: Código: Public Function FirstWord(Byval frase As String) As String Dim word As String = "" For i As Integer = 1 To Len(frase) 'Analizamos desde la posición 1 hasta el maximo de la frase por un For buscando el espacio en blanco 'para saber que se comienza a escribir una segunda palabra, y por tanto, sabemos cual es la primera If Mid(frase,i,1) = " " Then word = Mid(frase, 1, (i - 1)) Return word Exit for End If Next If word = "" Then 'Si la variable "word" no tiene nada guardado (esto se debe a que solo hay una palabra en la frase) 'procedemos a guardar en word la frase entera Return frase End If End Function Y la función para la ultima palabra (que deberia ser la segunda, no la ultima u.u) Básicamente hago lo mismo que en la primera para sacar la primera palabra, y a a partir de ahí, la "quito" para que lo vuelva analizar ya sin esa primera palabra: Código: Public Function SecondWord(ByVal frase As String) As String Dim word As String = "" Dim startSecondWord As Integer = 0 For i As Integer = 1 To Len(frase) If Mid(frase, i, 1) = " " Then startSecondWord = i + 1 'añadimos el +1 para que se salte el espacio y comienze por la 2º palabra directamente frase = Mid(frase,startSecondWord) 'Guardamos la frase ya con la primera palabra quitada End If Next For x As Integer = 1 To Len(frase) If Mid(frase, x, 1) = " " Then word = Mid(frase,1, (x - 1)) Return word Exit For End If Next If word = "" Then 'Si la variable wrod esta vacia, igual que en FirstWord devolvemos la frase entera, que ya ha sido cortada la primera 'palabra el primer For de esta función return frase End If End Function No se si es posible saber si un cadena llega a su fin, así no necesitaría buscar ese espacio, que es el mismo que me cusa el problema de que si solo hay una palabra en toda la frase, necesite del ultimo If Then para sacarla >.< Si alguien me pudiera dar algún consejo se lo agradecería :) Un saludo Título: Re: Separar palabras de una frase Publicado por: abreu20011 en 21 Noviembre 2011, 05:28 am Como sabia que iba a postear y encontrar la solución xD
Por si alguien tiene una duda similar, el framework pone a nuestra disposición una función que me acaba de enamorar: Split(http://msdn.microsoft.com/es-es/library/6x627e5f(v=vs.80).aspx (http://msdn.microsoft.com/es-es/library/6x627e5f(v=vs.80).aspx)) Código: Dim frase As String = "Split mola mucho" Dim comando() As String = Split(frase) Console.WriteLine("La primera palabra es: " & comando(0)) Console.WriteLine("La segunda palabra es: " & comando(1)) Console.WriteLine("La tercera palabra es: " & comando(2)) Esto no devuelve: La primera palabra es: Split La segunda palabra es: mola La tercera palabra es: mucho Un saludo a todos :) |