Javascript: find word in string
Asked Answered
D

3

15

Does Javascript have a built-in function to see if a word is present in a string? I'm not looking for something like indexOf(), but rather:

find_word('test', 'this is a test.') -> true
find_word('test', 'this is a test') -> true
find_word('test', 'I am testing this out') -> false
find_word('test', 'test this out please') -> true
find_word('test', 'attest to that if you would') -> false

Essentially, I'd like to know if my word appears, but not as part of another word. It wouldn't be too hard to implement manually, but I figured I'd ask to see if there's already a built-in function like this, since it seems like it'd be something that comes up a lot.

Dorathydorca answered 25/8, 2014 at 20:37 Comment(5)
possible duplicate of How can I check if one string contains another substring in JavaScript?Buddle
@JeremyJStarcher did you read the question?Dorathydorca
Actually, yes, I see the one spot where it's false, because of it being 'testing', and thus, that's the difference. But your question reads like "I don't like the syntax of indexOf(), what can I use instead" instead of actually explaining that indexOf() doesn't do what I want because ... explanationMarileemarilin
@Dorathydorca Yes I did. The linked answer discusses the regex, though briefly.Buddle
@JeremyJStarcher The person asking the question is asking a fundamentally different question, and scanning down the answers I don't see any that would answer the question above. My apologies if I'm missing something.Dorathydorca
R
26

You can use split and some:

function findWord(word, str) {
  return str.split(' ').some(function(w){return w === word})
}

Or use a regex with word boundaries:

function findWord(word, str) {
  return RegExp('\\b'+ word +'\\b').test(str)
}
Reformation answered 25/8, 2014 at 20:39 Comment(3)
The former wouldn't handle punctuation properly, but the latter looks like it'd be what I need. Thanks!Dorathydorca
I suppose to make the first one work, one could use .split(/\s*\b\s*/) as per #24718848. Didn't know about the .some() function, so thanks for teaching me about that too :)Dorathydorca
The two functions aren't equivalent. findWord('test', 'test-team') will return false in the first case and true in the second. The first should split on \b or the second use ' '. The second is likely very much faster for big strings.Ermeena
W
5

The JavaScript includes() method determines whether a string contains the characters of a specified string. This method returns true if the string contains the characters, and false if not.

Syntax:

string.includes(searchvalue, start)

Parameter values:

Parameter      Description
searchvalue    Required. The string to search for
start          Optional. Default 0. At which position to start the search

Example:

const sentence = 'The quick brown fox jumps over the lazy dog.';
const word = 'fox';
console.log(`The word "${word}" ${sentence.includes(word) ? 'is' : 'is not'} in the sentence`);
Wernick answered 27/9, 2020 at 7:41 Comment(0)
C
-1

Moderns browsers have the Array.prototype.includes(), which determines whether an array includes a certain value among its entries, returning true or false as appropriate.

Here's an example:

const ShoppingList = ["Milk", "Butter", "Sugar"];

console.log(`Milk ${ShoppingList.includes("Milk") ? "is" : "is not"} in the shopping list.`);

console.log(`Eggs ${ShoppingList.includes("Eggs") ? "is" : "is not"} in the shopping list.`)
Cephalopod answered 27/9, 2020 at 3:16 Comment(2)
Perhaps rephrase your answer without typos.Benzyl
Include a link to the includes method, an example of usageVaporescence

© 2022 - 2024 — McMap. All rights reserved.