método pra eu saber quantas vezes repete um caracter

String texto = “Oii, blablabaal ; alalablabllba ;ababkakbkaka; bblebleble;”;

Existe um método em String pra eu saber quantas vezes o “;” está contido no texto?

a) O javadoc é seu amigo - dê uma olhada em http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html

b) Já vou adiantar que você é que vai ter de fazer isso. Dica: olhe o método “charAt” da classe String.

Não, mas talvez você possa usar split(), passando como argumento aquilo que define o token (no seu caso, ";"), e o número de tokens (tamanho do vetor retornado) é igual ao número de ocorrências? Não tenho certeza, estou deduzindo apenas, alguém me corrija se eu estiver dizendo besteira…

Senão…

int count = 0;
char procurado = "a"
for ( int i = 0 ; i < str.length() ; i++ ) {
    if ( str.charAt(i) == procurado ) count++;
}
System.err.println("A String '" + str + "' contém " + count + " caracter(es)");

Rodrigo

[edit: ooops, alguém foi mais rápido que eu]

O Problema de eu usar charAt,
é que eu vou ter que fazer um for e pra cada carater e vou fazer a comparação.
:frowning:
queria saber se a String, teria um método mais eficáz entendeu}

Abraços.

O mais eficaz (faça um benchmark) é realmente fazer o tal do “for” com “charAt”. Usar split, para começar, vai criar e compilar uma expressão regular (é lento), alocar um array de strings, criar alguns outros objetos temporários, etc. Só que é chato fazer o tal do “for”.
Por outro lado, se você precisa do “;” para alocar um array de strings, contendo as partes dessa string que estão separadas por “;”, é muito melhor e mais limpo usar String.split, que já faz tudo (alocar o array, separar etc.) para você.

Só é bom tomar cuidado ao utilizar o split pra contar, nesse exmplo, quantos “;” aparecem. Se vc for utilizar o tamanho do array de String retornado como sendo igual ao número de “;”, vc pode cair num erro comum, pois
“blablablabla”.split("[;]") vai te retornar um array de String de 1 posição, a qual contém a String blablablabla. Assim, tome cuidado em assumir que o número de posições do array oriundo do split é igual ao número de “;” encontrados.