Como verifiar se a string é letra ou numero?

10 respostas
J

Pessoal, tenho esta dúvida. Como eu posso verificar se a estring é letra ou numero??

String str = “a2d3fd32”;
String str2="";

str2 = str.substring(1,2);

str2 é igual há - 2 -

mas como eu faço essa verificacão??? sem fazer conversão??

10 Respostas

davidbuzatto
public boolean ehInteiro( String s ) {

    // cria um array de char
    char[] c = s.toCharArray();
    boolean d = true;

    for ( int i = 0; i < c.length; i++ )
        // verifica se o char não é um dígito
        if ( !Character.isDigit( c[ i ] ) ) {
            d = false;
            break;
        }
    }

    return d;

}

Falta verificar se tem um ponto no meio caso queria um número decimal.

Até mais!

Henrik
try {
	    valor = (Double.parseDouble(str2));
            ehNumero = true;
	} catch (NumberFormatException e) {	  
            ehNumero = false;
	}

       if (ehNumero) {
       ....
       }
J

Valew David exatamente o que eu queria!!

TÓPICO RESPONDIDO!

davidbuzatto

Disponha :smiley:

Marky.Vasconcelos

acho que você pode fazer isso por expressões regulares
ainda não entendo muito maisacho que é algo assim

String a = "a2w5sd6545";
if(a.contains("^[a-Z]"))System.out.println("Tem letras");
else System.out.println("Apenas numeros");
davidbuzatto

Realmente Mark, pode-se usar uma expressão regular, mas seria mais interessante verificar se é um número e não se a String não contém números. Se sua String for "ac_ds" vc vai ver que seu trecho de código vai mostrar "Apenas números" enquanto na verdade existe um "_" ali no meio. Mais uma coisa, o contains não funciona com expressões regulares.

Se quiser usar expressões regulares, vc pode fazer:

String s1 = "";
String s2 = ".";
String s3 = "0.";
String s4 = "0";
String s5 = ".0";
String s6 = "0.0";


// [-]? com ou sem o sinal de subtração
// \d* zero ou mais dígitos
// [.]? com ou sem ponto
// \d+ um ou mais números
String p = "[-]?\d*[.]?\d+";

// compara cada String com o padrão "p"
System.out.println( Pattern.matches( p, s1 ) );
System.out.println( Pattern.matches( p, s2 ) );
System.out.println( Pattern.matches( p, s3 ) );
System.out.println( Pattern.matches( p, s4 ) );
System.out.println( Pattern.matches( p, s5 ) );
System.out.println( Pattern.matches( p, s6 ) );

Até mais!

jimmyhc

Mark_Ameba:
acho que você pode fazer isso por expressões regulares
ainda não entendo muito maisacho que é algo assim

String a = "a2w5sd6545"; if(a.contains("^[a-Z]"))System.out.println("Tem letras"); else System.out.println("Apenas numeros");

Poooooo, valeu mesmo…

…gostei dessa!!

B
Com regex seria melhor checar tudo, até o final.
String s = "Déjàvu";

      if (s.matches("^[a-zA-ZÁÂÃÀÇÉÊÍÓÔÕÚÜáâãàçéêíóôõúü]*$"))
         System.out.println("Só tem letras.");
      else if (s.matches("^[0-9]*$"))
         System.out.println("Só tem dígitos.");
      else
         System.out.println("Outro");
andre.santos

Não qrdo desvirtuar o tópico mas desvirtuando, seria melhor chegar se só tem números e não os caracteres que não pode ter…

String texto = "abcdefg";

//Só números
if(texto.matches("^[0-9]*$")){
...

//Se quiser separador decimal tb
if(texto.matches("^[0-9]*[.]{0,1}[0-9]*$")){
...

Espero ter ajudado…

[]'s

Rafael_Costa_Teixeir

Pessoal ,

Somente para ficar no historico desse tópico , no caso de outras pessoas estiverem com essa duvida , segue uma forma de fazer essa verificação parecido com a do davidbuzatto:

public boolean ehInteiro( String s ) {  
  
		// cria um array de char  
		// char[] c = s.toCharArray();  
		boolean d = true;  
  
		for ( int i = 0; i < s.length(); i++ ) { 
			// verifica se o char não é um dígito  
			if ( !Character.isDigit( s.charAt(i) ) ) {  
				d = false;  
				break;  
			}  
		}  
  
	return d;  
  
	}
Criado 10 de agosto de 2007
Ultima resposta 3 de mai. de 2011
Respostas 10
Participantes 8