2

I would like to check how many words in a string

eg.

 asdsd sdsds sdds 

3 words

The problem is , if there is more than one space between two substring , the result is not correct

here is my program

function trim(s) {   
  return s.replace(/^\s*|\s*$/g,"")   
} 

var str = trim(x[0].value);
var parts = str .split(" ");
alert (parts.length);

How to fix the problem? thanks for help

6 Answers 6

3

You could just use match with word boundaries:

var words = str.match(/\b\w+\b/g);

http://jsbin.com/abeluf/1/edit

Sign up to request clarification or add additional context in comments.

Comments

2
var parts = str .split(" ");
parts = parts.filter(function(elem, pos, self) {
     return elem !== "";
});

Please try this. Make sure you are using latest browser to use this code.

Comments

1

Please use this one Its already used by me in my project :

function countWords(){
    s = document.getElementById("inputString").value;
    s = s.replace(/(^\s*)|(\s*$)/gi,"");
    s = s.replace(/[ ]{2,}/gi," ");
    s = s.replace(/\n /,"\n");
    document.getElementById("wordcount").value = s.split(' ').length;
}

Comments

1

It's easy to find out by using split method, but you need to sort out if there are any special characters. If you don't have an special characters in your string, then last line is enough to work.

s = document.getElementById("inputString").value;
s = s.replace(/(^\s*)|(\s*$)/gi,"");
s = s.replace(/[ ]{2,}/gi," ");
s = s.replace(/\n /,"\n");
document.getElementById("wordcount").value = s.split(' ').length;

Comments

0

try:

function trim(s) {   
  return s.replace(/^\s*|\s*$/g,"")   
} 
var regex = /\s+/gi;
var value = "this ss ";
var wordCount = value.trim().replace(regex, ' ').split(' ').length;
console.log( wordCount );

Comments

0

An even shorter pattern, try something like this:

(\S+)

and the number of matches return by regex engine would be your desired result.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.