Problem nie jest taki prosty do rozwiązania... Jeden z przykładów:
const str = "My name is Bond, James Bond. \nI live in England."
const words = str.replace(/\s+/g, ' ').split(' ');
words; // ["My", "name", "is", "Bond,", "James", "Bond.", "I", "live", "in", "England."]
words.length; // 10
Zrobiłem tu parę założeń, dość istosnych:
- dopuszczam istnienie róznych rodzajów białych znaków, nie tylko spacje, ale i taby, znaki nowego wiersza itp. Jeśli jest ich kilka obok siebie to zmieniam na jeden.
- Zakładam, że wyrazy dzieli tylko spacja - tu kwestia rozważenia np. jak rozumiesz "biało-czerwony", jako jeden czy dwa wyrazy?
Pytanie też czy godzisz się na to, że w wyrazach zostają różne znaki ?!&% itp. oraz ak traktujemy cyfry?
zbyt mało danych aby można skonstruować kompletne rozwiązanie. Najlepiej zrób unit testy i pokaż nam swoje asercje, to dopasujemy do tego body metody liczącej słowa. Tak najlepiej podchodzić do takich problemów.