Existe uma maneira simples de verificar quantas vezes um caractere aparece em uma String?
Existe uma maneira simples de verificar quantas vezes um caractere aparece em uma String?
Respostas:
Você pode remover qualquer outro caractere da string e verificar o comprimento:
str.replace(/[^a]/g, "").length
Aqui é contado quantos as estão dentro str.
let xLength = str.replace(/[^a || A]/g, "").length;
let xLength = str.replace(/[^aA]/g, "").length;
Isso conta a no exemplo abaixo:
str = "A man is as good as his word";
alert(str.split('a').length-1);
Se você quiser não diferenciar maiúsculas de minúsculas, deve usar algo como
alert(str.split( new RegExp( "a", "gi" ) ).length-1);
Para que pegue "A" e "a" ... a sinalização "g" não é realmente necessária, mas você precisa da sinalização "i"
Use um RegEx para contar o número de "a" s em uma string.
var string = 'aajlkjjskdjfAlsj;gkejflksajfjskda';
document.write(string.match(/a/gi).length);
Deixe-me explicar como isso funciona:
string.matchEste é um método RegEx. Ele procura o RegEx especificado dentro da string especificada (neste caso, a string "string").
(/a/gi)Este é o RegEx real. Diz, "encontre o caractere a." É muito simples. Ele também carrega dois sinalizadores, o "g" e o "i". O "g" diz para encontrar TODAS as ocorrências do caractere "a". Caso contrário, ele encontraria apenas o primeiro e nunca passaria do número um. O segundo sinalizador é "i". Isso faz com que o RegEx corresponda a todos os casos desse caractere. Se esse sinalizador (i) não estivesse lá, o código acima contaria apenas 4, porque ignoraria o "A" maiúsculo na string. Por causa do "i", ele corresponderá a maiúsculas e minúsculas. Remova o "i" se quiser fazer a correspondência entre maiúsculas e minúsculas.
string.matchretorna uma matriz de todas as correspondências, portanto, usamos o lengthmétodo para recuperar o número de entradas da matriz. Simples assim!
a" em string, então string.match(/a/gi)é igual a nulle você obteve o erro Cannot read property 'length' of null.
É porque se quisermos ser capazes de contar qualquer tipo de caractere, precisamos considerar duas expressões. Um para comuns personagens e segundo para especiais caracteres, por exemplo, como [, ], ^e assim por diante. É fácil esquecer isso, mas mesmo que nos lembremos, acho que estamos expandindo nosso código desnecessariamente.
Em caso de corda stre caráter chfunciona cada uma destas soluções:
let count = str.split(ch).length - 1
(obrigado a @Sarfraz )
ou
let count = str.split('').filter(x => x == ch).length
ou
let count = 0
str.split('').forEach(x => x == ch ? count++ : null)
Apreciar!
var s = "dqsskjhfds";
alert(s.length - s.replace(/a/g, "").length); // number of 'a' in the string
var a = "acvbasbb";
var b= {};
for (let i=0;i<a.length;i++){
if((a.match(new RegExp(a[i], "g"))).length > 1){
b[a[i]]=(a.match(new RegExp(a[i], "g"))).length;
}
}
console.log(b);