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??
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??
[code]
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;
}[/code]
Falta verificar se tem um ponto no meio caso queria um número decimal.
Até mais!
try {
valor = (Double.parseDouble(str2));
ehNumero = true;
} catch (NumberFormatException e) {
ehNumero = false;
}
if (ehNumero) {
....
}
Valew David exatamente o que eu queria!!
TÓPICO RESPONDIDO!
Disponha
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");
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:
[code]
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 ) );[/code]
Até mais!
[quote=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");
[/quote]
Poooooo, valeu mesmo…
…gostei dessa!!
Com regex seria melhor checar tudo, até o final.
[code] 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");[/code]
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
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;
}