I am currently using str.indexOf("word")
to find a word in a string.
But the problem is that it is also returning parts of other words.
Example: "I went to the foobar and ordered foo." I want the first index of the single word "foo", not not the foo within foobar.
I can not search for "foo " because sometimes it might be followed by a full-stop or comma (any non-alphanumeric character).
You'll have to use regex for this:
> 'I went to the foobar and ordered foo.'.indexOf('foo')
14
> 'I went to the foobar and ordered foo.'.search(/\bfoo\b/)
33
/\bfoo\b/
matches foo
that is surrounded by word boundaries.
To match an arbitrary word, construct a RegExp
object:
> var word = 'foo';
> var regex = new RegExp('\\b' + word + '\\b');
> 'I went to the foobar and ordered foo.'.search(regex);
33