Trucos Contar las palabras de un texto

Hace unos días pidieron en la lista una función para contar las palabras de un texto. Una opción podría ser emplear la función split() para partir el texto en los trozos que estén separados por un blanco y luego mirar el ubound() de la matriz devuelta. Pero esto tendría gran facilidad de errores : palabras separadas por coma, punto u otro signo de puntuación, varios blancos seguidos (habrí que recorrer la matriz buscando "no blancos" en lugar de emplear ubound(), etc.

Para solucionar estos problemas he realizado esta función. No la he probado mucho pero creo que funcionará :


Function ContarPalabras(ByVal Texto As String) As Long
Dim EnPalabra As Boolean, NumPalabras As Long, i As Long, j As Long
Dim Letra As String * 1
'si me falta alguno no hay más que añadirlo a la constante
Const Separadores As String = " ºª\!|""@·#$%&¬/()=?'¡¿^`[]*+¨´{}<>,;.:-_" &
vbCrLf

'eliminar los espacios por delante y por detrás, aunque en realidad no le
'"molestan" a la función
Texto = Trim(Texto)
For i = 1 To Len(Texto)
     Letra = Mid(Texto, i, 1)
     'si es una letra y no estaba recorriendo una palabra es que es una nueva palabra
     If InStr(Separadores, Letra) = 0 Then
         If Not EnPalabra Then
             EnPalabra = True
             NumPalabras = NumPalabras + 1
         End If
     Else
         EnPalabra = False
     End If
Next i
ContarPalabras = NumPalabras
End Function



Trucos Trucos

Visual Basic Página de Visual Basic

Página principal Página principal

www.jrubi.com