The $# expansion will tell you the number of elements in a variable / array. If you’re working with a bash version greater than 2.05 or so you can:
VAR='some string with words'
VAR=( $VAR )
echo ${#VAR[@]}
VAR=( $VAR )
echo ${#VAR[@]}
This effectively splits the string into an array along whitespace (which is the default delimiter), and then counts the members of the array.
EDIT:
Of course, this recasts the variable as an array. If you don’t want that, use a different variable name or recast the variable back into a string:
VAR="${VAR[*]}"