obtener palabras de una frase

01/02/2005 - 18:17 por jorge | Informe spam
he estado leyendo y veo que con la funcion split se
obtienen el numero de palabras de una frase, pero hay
alguna funcion que de las palabras de una frase? es decir
que las separe

gracias

Preguntas similare

Leer las respuestas

#1 Misael Monterroca
01/02/2005 - 19:18 | Informe spam
Split hace precisamente eso.

Dim frase As New String("esta es la frase")
Dim palabras As String()
palabras = frase.Split(" ")

Console.Write(palabras(0)) 'Escribe esta
Console.Write(palabras(3)) 'frase


Saludos!
Misael Monterroca
http://www.neo-mx.com/blog
Respuesta Responder a este mensaje
#2 A.Poblacion
01/02/2005 - 19:20 | Informe spam
"jorge" wrote in message
news:06fe01c50881$ed0665b0$
he estado leyendo y veo que con la funcion split se
obtienen el numero de palabras de una frase, pero hay
alguna funcion que de las palabras de una frase? es decir
que las separe



Si, el Split lo que hace es que las separa. Por eso Split().Length dice
el numero, porque el "Length" cuenta en número de elementos que hay en el
arreglo devuelto por Split().

Dim laFrase as String = "Esto es una frase"
Dim palabras() as String = laFrase.Split()

En "palabras" tienes un arreglo que en cada elemento tiene una de las
palabras.
Respuesta Responder a este mensaje
#3 Leonardo Azpurua
02/02/2005 - 01:56 | Informe spam
"jorge" escribió en el mensaje
news:06fe01c50881$ed0665b0$
he estado leyendo y veo que con la funcion split se
obtienen el numero de palabras de una frase, pero hay
alguna funcion que de las palabras de una frase? es decir
que las separe



Hola, Jorge:

Split produce un arreglo con todas las secuencias de caracteres delimitadas
por una secuencia particular dentro de un string (por ejemplo, un espacio).
Length es un metodo del arreglo devuelto, que devuelve la cantidad de
elementos.

El problema con Split es que si la frase no está perfectamente formada y las
palabras delimitadas por un caracter unico (por ejemplo un espacio), puede
producir resultados indeseados. Por ejmplo ",,,".Split(",") produce un
arreglo con cuatro valores nulos!

Cuando se quiere analizar texto es muchisimo mejor utilizar expresiones
regulares.

La siguiente rutina obtiene las palabras de una frase "mal formada",
empleando en primer lugar Split, y luego una expresion regular:

Sub Main
Dim inString As String = "Esto es una frase mal armada, con signos de
puntuacion"
Dim s as String() = inString.Split(" ")
Console.WriteLine("Con Split son {0} palabras", s.Length)
Console.WriteLine("")
For each p as string in s
Console.WriteLine(p)
Next

Dim m as System.Text.RegularExpressions.MatchCollection= _
System.Text.RegularExpressions.Regex.Matches(inString, "\w+")
Console.WriteLine()
Console.WriteLine("Con Expresiones regulares son {0} palabras", m.Count)
Console.WriteLine("--")
For Each m1 as System.Text.RegularExpressions.Match In m
Console.WriteLine(m1.Value)
Next
Console.ReadLine()
End Sub

y la salida es la siguiente:

Con Split son 12 palabras

Esto


es
una
frase
mal
armada,
con
signos
de
puntuacion

Con Expresiones regulares son 10 palabras
Esto
es
una
frase
mal
armada
con
signos
de
puntuacion

Te preguntarás, "¿pero bueno, quien sera capaz de escribir una frase tan
mal?", pues cualquiera. En cualquier caso, los signos de puntuacion son de
lo mas normales. Y conozco a mucha gente que escribe "mi padre,yo y el
burro" (es decir, sin espacio despues de la coma). Si usaras Split
"padre,yo" seria tratado como una sola palabra.

Split está bien para "trocear" cadenas generadas de una manera controlada
(una lista de valores separados por comas, por ejemplo), pero es
practicamente inservible para el proceso de texto generado por seres humanos
de verdad.

Salud!
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida