Ajuda Strings

7 respostas
morcinek

Boa noite, estou precisando retirar algumas informações de uma String, já tentei de varias formas e não consegui, se alguem puder dar uma ajuda?

preciso retirar as seguintes informações por exemplo de uma String = “AjudaStrings1234”

2 letras caixa alta
10 letras caixa baixa
4 numeros

o problema está que não consigo contar apenas os caracteres caixa alta ou baixa, e numero…

7 Respostas

pmlm

Uma ajuda:

String s = "AjudaStrings1234" ;

int letrasAE= 0;
int letrasae= 0;

for (char c:s.toCharArray()){
    if (c>='A' && c<= 'E'){
         letrasAE++;
     }
     if (c>='a' && c<= 'e'){
         letrasae++;
     }
}

System.out.println(letrasAE+ " letras entre A e E");
System.out.println(letrasae+ " letras entre a e e");
renanjp

Saudações companheiro…

No começo do meu aprendizado sobre java eu fazia muitas coisas na mão…
e isso é bom… pois desenvolve o raciocinio lógico…

mas de uma olhada nos metodos que a classe String lhe oferece… não só a String mais todas as classes wrappers (Integer, Character etc).

Ex:

String s = "teste";
System.out.println(s.toUpperCase());

Olhe o exemplo acima, o metodo transforma todas os caracteres em maiusculo…

Mas tome cuidado com classes imutaveis pois elas criam copias defencivas…
A String é uma classe imutavel…
portanto ao efetuar o metodo toUpperCase() a String em si não se altera e sim, é retornado simplesmente uma nova String…

Qualquer duvida estou a disposição…

Att :slight_smile:

DaniloAndrade

Bom dia vc pode usar regex

public static void main(String[] args) {
		
		
		String teste = "AjudaStrings1234";
		
		Pattern pattern = Pattern.compile("[A-Z]+?");
		int countMaiuscula = countPattern(teste,pattern);
		
		pattern = Pattern.compile("[a-z]+?");
		
		int countMinusculas = countPattern(teste, pattern);
		
		pattern = Pattern.compile("[0-9]+?");
		
		int countNumeros = countPattern(teste, pattern);
		
		System.out.println("letras Maiusculas: " + countMaiuscula );
		System.out.println("letras minusculas: " + countMinusculas );
		System.out.println("Numeros: " + countNumeros );
		
	}

	private static int countPattern(String teste, Pattern pattern) {
		Matcher matcher = pattern.matcher(teste);
			int count = 0;
			while(matcher.find()){
				String valor = matcher.group();
				count += valor.length();
			}
		return count;
	}
Joao_Alonso
public static void main(String args[]){
	
	String teste = "AjudaStrings1234";
	char[] lista = teste.toCharArray();
	for (char c : lista){
		
		try{
			Integer.parseInt(Character.toString(c));
			System.out.println("numero " + c);
		}catch(Exception e){
			if(Character.isUpperCase(c)){
				System.out.println("maiusculo " + c);
			}else{
				System.out.println("minusculo " + c);
			}
		}
	}
}

Usando as Wrappers do java. Ai vc trata caso a caso.
flw.

DaniloAndrade
jalonso:
public static void main(String args[]){
	
	String teste = "AjudaStrings1234";
	char[] lista = teste.toCharArray();
	for (char c : lista){
		
		try{
			Integer.parseInt(Character.toString(c));
			System.out.println("numero " + c);
		}catch(Exception e){
			if(Character.isUpperCase(c)){
				System.out.println("maiusculo " + c);
			}else{
				System.out.println("minusculo " + c);
			}
		}
	}
}

Usando as Wrappers do java. Ai vc trata caso a caso.
flw.

não é bem isso que o morcinek quer,

ele quer contar a quantidade de cada tipo, pelo menos foi o que eu entendi

do jeito acima, vai ser impresso os caracteres não a quantidade

Joao_Alonso

Sim, por isso eu falei pra ele tratar cada caso, o sys.out eu puis só de exemplo, acho q o importante era como separar os caracteres.

mauriciot.silva
public static void main(String[] args) {

		int countDigit = 0;
		int countLower = 0;
		int countUpper = 0;
		String ajuda = "AjudaStrings1234";
		for (char ch : ajuda.toCharArray()) {
			if (Character.isDigit(ch)) {
				countDigit++;
			} else if (Character.isLowerCase(ch)) {
				countLower++;
			} else if (Character.isUpperCase(ch)) {
				countUpper++;
			}
		}
	}
Criado 11 de julho de 2012
Ultima resposta 12 de jul. de 2012
Respostas 7
Participantes 6