String em Java. Procurar um caracter

17 respostas
eltonbonato

gostaria de saber como declarar uma string em java e correr o vetor de string para achar um caracter

tipo assim ó. (está em C)

char str[1000]; scanf("%s",&str); for(int i=0; i<strlen(str); i++) { if(str[i] == 'a') // mostrar caracter na tela }

vi que a string é declarada como ‘string’ mesmo, mas nao consegui fazer a parte de entrar com a string e mostrar na tela.

17 Respostas

E

Use o que já está pronto (o método indexOf da classe java.lang.String.)

Por favor, consulte sempre a documentação:

http://java.sun.com/javase/6/docs/api/java/lang/String.html

Poneis123

Cara a própria classe String em java, tem um método indexOf(); que vc consegue utiliza-lo para buscar um caracter na String. de uma olhada nesse método:

http://java.sun.com/javase/6/docs/api/java/lang/String.html#indexOf(java.lang.String)

thiago.correa

Segue para ler do console

Scanner s = new Scanner(System.in);
		System.out.print("Digita aí " );
		String texto = s.nextLine();
Poneis123

entanglement:
Use o que já está pronto (o método indexOf da classe java.lang.String.)

Por favor, consulte sempre a documentação:

http://java.sun.com/javase/6/docs/api/java/lang/String.html

Vixi, respondemos juntos =/

claudneto
String s = "Hello World!";

char c = 'd';

for (int i = 0; i < s.length(); i++) {
  if (s.charAt(i) == c) {
    System.out.println (c);
  }
}

Isso ae vai pegar a string "Hello World!" e vai procurar o char "d" nessa String.

Poneis123
claudneto:
String s = "Hello World!";

char c = 'd';

for (int i = 0; i < s.length(); i++) {
  if (s.charAt(i) == c) {
    System.out.println (c);
  }
}

Isso ae vai pegar a string "Hello World!" e vai procurar o char "d" nessa String.

Faz isso não mano. Usa o indexOf q a gente falou ae.
String s = "Hello World";

if(s.indexOf("d") != -1){ //Se for diferente de -1 é pq existe o caracter.
  System.out.println (c);
}
pvrsouza

indexOf acho mais elegante.

M
Poneis123:
Faz isso não mano. Usa o indexOf q a gente falou ae.
String s = "Hello World";  

if(s.indexOf("d") != -1){ //Se for diferente de -1 é pq existe o caracter.  
    System.out.println (c);  
}
tá... mas segundo o código de exemplo (em C) ele não queria apenas o índice do primeiro caracter encontrado. Então, por que não usar o charAt dentro do for? E se ele quiser saber todas as ocorrências do "l" por exemplo?

Boa sorte!

Poneis123

wellington.nogueira e mspereira ta certo… confesso q não li o código q ele postou… mal ae… mas ta ai 2 soluções: Para saber se contem um determinado caracter na String use o indexOf, para saber quantos contem use o for com charAt(). =P

Poneis123
Aproveitando a deixa, uma outra forma de fazer isso seria:
String texto = "FASDFASDFASD";

    String textoArray[] = texto.split("F"); // F é o caracter q vc busca
    
    System.out.println(textoArray.length - 1);
Simples tb, e fica disponivel caso vc queira não só procurar 1 caracter, mas uma string. Por exemplo saber qtas vezes aparece "FA" nesta string.

Abrs.

pedroroxd
claudneto:
String s = "Hello World!";

char c = 'd';

for (int i = 0; i < s.length(); i++) {
  if (s.charAt(i) == c) {
    System.out.println (c);
  }
}

Isso ae vai pegar a string "Hello World!" e vai procurar o char "d" nessa String.


Recomendo fortemente que não faça isso, usar a recursividade nesse caso é 1 pleonasmo...
Sempre quando puder evitar recursividade Evite.
Use o método indexOf

eltonbonato

e se eu quiser que o usuário entre com a string? qual comando uso?
vi que esse comano abaixo é de entrada.
serie ele? System.in.//+ algo?

M

Como? Assim?

thiago.correa:

Segue para ler do console

Scanner s = new Scanner(System.in); System.out.print("Digita aí " ); String texto = s.nextLine();


Boa sorte!

thiago.correa

eltonbonato:
e se eu quiser que o usuário entre com a string? qual comando uso?
vi que esse comano abaixo é de entrada.
serie ele? System.in.//+ algo?

Se você testar o exemplo que eu coloquei aqui, verá como é que se lê um texto do console!

pedroroxd

Pra vc ler algo do console é assim:

Scanner scn = new Scanner(System.in); System.out.print("Digita uma string: " ); String texto = scn.nextLine(); System.out.print("Digita uma numero: " ); int numero = scn.nextInt(); //não sei se o i é maiúsculo, to sem IDE agora

WellingtonRamos

Falar para usar apenas o indexOf não resolve o problema sugerido pois retornará apenas a primeira ocorrência e não todas as ocorrências (não há um break no loop).

A solução do claudneto é a que mais se aproxima da proposta.

Se quiser que seja independente de ser Upper ou Lowercase, segue:

String str = "sAlada"; //repare o primeiro A em maiúsculo.
		
		char character = 'a';
		
		char comparador = Character.toLowerCase(character);
		
		for (int i = 0; i < str.length(); i++) {
			char charAt = str.charAt(i);
			if (Character.toLowerCase(charAt) == comparador) {
				System.out.println (character + " encontrado em " + str + " --> " + charAt);
			}
		}
WellingtonRamos

Recomendo fortemente que não faça isso, usar a recursividade nesse caso é 1 pleonasmo…
Sempre quando puder evitar recursividade Evite.
Use o método indexOf
Recursividade?
E, novamente, indexOf não resolve o problema sugerido 8)

Criado 7 de abril de 2010
Ultima resposta 7 de abr. de 2010
Respostas 17
Participantes 9