Eu presciso pegar de uma String um caracter ou mesmo uma substring em
por exemplo tenho a String “abcdefgh” tenho que pegar substring “abc”
ou o caracter ‘a’ até ai tudo bem atráves do programaninha que eu criei:
eu não estou conseguindo pegar todas as ocorrencias de um determinado caracter em uma string…como eu faço?? neste algortimo tenho certeza que da para implementar mas não estou conseguindo, um exemplo e á própria String que eu coloquei no prog: String w="“abcabcabcabc”; neste caso tem 4 ocorrências de abc como eu posso resolver isto…? alguém sabe? quero que me mostre quantas ocorrências tem e me retorne as substrings ou caracteres…
String str="abcabcabc";
String part="abc";
int count=0;
String strCompare=null;
for(int i=0;i<str.length();i++){
strCompare=str.substring(i,i+part.length());
System.out.println(strCompare);
if (strCompare.equals(part)){
count++;
}
}
System.out.println("Count="+count);
No “for” eu pego cada parte a partir do index i e vou até o comprimento da parte a ser verificada. Não testei o código mas acho que é por aí.>
edymrex
Tentei usar seu cógido mas está com erro tb tentei trabalhar nele mas não deu…
Roger75
Bem, como disse, não testei o código, mas veja que a lógica do que você deseja fazer é essa mesmo… varrer a string e procurar pela ocorrência da palavra nela.
Ismaels
Oi, porque você não tenta uma abordagem usando regex, com Pattern e Matcher? Acho que seria bem mais fácil encontrar todas as ocorrências.
Se precisar de ajuda avise aqui 8)
T
thiagomont
Não seria melhor nessa caso usar o StringBuffer?
Talves o método abaixo possa ajudar…
indexOf(String str, int fromIndex) - Returns the index within this string of the first occurrence of the specified substring, starting at the specified index.
No caso vc poderia pegar a primeira ocorrência da substring que vc quer. Como vc sabe o tamanho dela vc pode fazer a procura novamente a partir do indice após o indice da substring anterior.
ViniGodoy
Seguindo a dica do smaels, o código abaixo usa pattern matching para achar todas as ocorrência de abc dentro do texto dado:
publicclassMatcherDemo{publicstaticvoidmain(String[]args){Stringw="abcabcabcabc";Stringy="abc";intprim=0,ult=0,cont=0;Patternp=Pattern.compile(y);Matcherm=p.matcher(w);while(m.find()){cont++;prim=m.start();ult=m.end();System.out.printf("Encontrado em %d até %d = %s\n",prim,ult-1,w.substring(prim,ult));}System.out.printf("Encontradas %d ocorrências de '%s' em '%s'",cont,y,w);}}
O código fica bem limpo, especialmente porque o matcher já retorna o último índice, evitando o cálculo de índice+tamanho. Aqui deixei as variáveis prim e ult para ficar mais didático, mas o código não ficaria muito mais confuso de fizéssemos o inline delas.
Só um detalhe. O método end() retorna o último índice encontrado+1. Isso é bastante conveniente já que o substring considera o indice inicial inclusivo e o final exclusivo.
A
andreban
Outra opção é usar essa versão do indexof:
indexOf(String str, int fromIndex)
Returns the index within this string of the first occurrence of the specified substring, starting at the specified index.