Necesito verificar si hay una frase o una palabra dentro de una determinada cadena. Sin embargo, la palabra no puede estar dentro de otra palabra. Por ejemplo, si la cadena es " Hola , ¿cómo estás ? Esto es genial, por cierto". Si estoy buscando la palabra "hola", solo debería aparecer una vez; la que está dentro de "esto" no debería contarse. El "cómo estás" también debe contarse ya que es una frase que estoy buscando. A continuación se muestra mi código. Esencialmente, tengo una variedad de matrices con frases que estoy buscando. Tengo un += porque si la cadena dice "Hola, ¿cómo estás?" por ejemplo, quiero responder tanto al "hola" como al "cómo estás". Creo que podría tener que usar expresiones regulares, pero no estoy muy seguro de cómo lo haría. Cualquier orientación sería muy apreciada. ¡Muchas gracias!
for(let a = 0; a < userquestions.length; a++) { for (let b = 0; b < userquestions[a].length; b++) { if(usermessage.includes(userquestions[a][b])) { responsemessage += chatbotresponses[a][Math.floor(Math.random() * chatbotresponses[a].length)]; } } }Deberías usar expresiones regulares, de hecho.
Prueba esto:
function escapeRegExp(string) { return string.replace(/([.*+?^=!:${}()|[]\/\])/g, "\\$1"); } function searchWholeWord(wholeWord, hostString) { var regex = '\\b'; regex += escapeRegExp(wholeWord); regex += '\\b'; var result = new RegExp(regex, 'i').test(hostString); return result } found = searchWholeWord("hi", "Hi, how are you? This is really cool, by the way."); alert(found); //returns true found = searchWholeWord("hi", "This is really cool, by the way."); alert(found); //returns falseBasado en esta publicación: busque una palabra completa en una cadena