Contar quantidade total de palavras específicas em um JavaScript de string

Nov 27 2020

Eu quero descobrir quantas vezes uma palavra específica ocorre em um String JavaScript, ou podemos dizer a quantidade total de palavras combinadas / correspondentes com a string de frase completa em JavaScript.

query = "fake";

var inputString = "fakefakefakegg fake 00f0 221 Hello wo fake misinfo fakeddfakefake , wo misinfo misinfo co wo fake , fake fake fake ";

resultado esperado = 13 (há 13 falsos na frase acima)

Respostas

FarbodAprin Nov 27 2020 at 11:02

Aqui estão dois métodos para encontrar o número total de palavras correspondentes de ocorrência na string.

A primeira função permite fornecer uma consulta como entrada. O segundo usa a função .match do JavaScript.

Ambos os métodos introduzidos são resistentes a qualquer caractere e independentes de divisor e separador como "" ou ",".

str1 é a sua consulta

 str1 = "fake";  

str2 é a string inteira:

 var inputString = "fakefakefakegg fake 00f0 221 Hello wo fake misinfo
 fakeddfakefake , wo  431,,asd misinfo misinfo co wo fake sosis bandari
 mikhori?, fake fake fake ";

Método 1: use a função .indexOf ou .search do JavaScript (vantagem, você pode fornecer dados)

function CountTotalAmountOfSpecificWordInaString(str1, str2)
{
    let next = 0;
    let findedword = 0;
        do {
            var n = str2.indexOf(str1, next);
            findedword = findedword +1;
            next = n + str1.length;
            }while (n>=0);
     console.log("total finded word :" , findedword - 1 );
     return findedword;
   }

Método 2: use a função .match do JavaScript:

/**
 * @return {number}
 *  you have to put fake as query manually in this solution!!! disadvantage
 */

function CountTotalAmountOfMachedWordInaString(str2) {
    let machedWord = 0;
    machedWord = str2.match(/fake/g).length; 
    console.log("total finded mached :" , machedWord);
    return machedWord;
}

chame as funções (entradas):

CountTotalAmountOfSpecificWordInaString("fake" , "fake fakefakegg fake 00f0 221 Hello wo fake rld fakefakefake , wo lklsak dalkkfakelasd co wo fake , fake fake fake" );
CountTotalAmountOfMachedWordInaString("sosis bandarie fake  khiyarshour sosis , droud bar fake to sosis3");


//Function 1 Output: total Fake = 13 , Function 2 Output: total Fake = 2