2010-10-28 5 views

Respuesta

100

Character.isDigit(string.charAt(index)) (JavaDoc) devolverá verdadero si es un dígito
Character.isLetter(string.charAt(index)) (JavaDoc) devolverá verdadero si se trata de una carta

+8

Nota: esto te dice si el personaje es una letra/dígito Unicode. El OP pidió "una carta A-z" ... lo que sea que eso signifique. –

+0

¿Por qué el ASCII ├ (255) pasa en mi caso? Pensé que era para a-z, A-Z y 0-9 solamente? – mr5

+0

Enlaces muertos para los javadocs. –

3

Compare su valor. Debe estar entre el valor de 'a' y 'z', 'A' y 'Z', '0' y '9'

+0

Este enfoque manual es mejor que el Character.isLetter 'método integrado'() ? –

+1

@IgorGanapolsky - Depende exactamente de lo que trates de hacer. Sugerencia: ¡hacen cosas diferentes! –

+0

@StephenC Pensé que 'Character.isLetter()' es rudimentario. ¿A menos que hablemos de internacionalización? –

6

que no saben de lo mejor, pero esto parece bastante simple para mí:

Character.isDigit(str.charAt(index)) 
Character.isLetter(str.charAt(index)) 
13

Como las respuestas indican (si se examina con cuidado), su pregunta es ambiguo. ¿Qué quiere decir con "una letra A-z" o un dígito?

  • Si desea saber si un carácter es una letra o dígitoUnicode, a continuación, utilizar los métodos y Character.isLetterCharacter.isDigit.

  • Si desea saber si un personaje es un carta ASCII o dígitos, entonces la mejor cosa que hacer es poner a prueba comparando con el carácter rangos 'a' a la 'z', 'A' a ' Z 'y' 0 'a' 9 '.

Tenga en cuenta que todas las letras ASCII/Unicode dígitos son letras/cifras ... pero hay muchas cartas Unicode caracteres y/o dígitos que no son ASCII. Por ejemplo, las letras acentuadas, cirílico, sánscrito, ...

+0

Entonces, ¿cómo determinar si un personaje es una letra cirílica? –

+0

Primero, haga una nueva pregunta –

8

Java clase de personaje tiene un método isLetterOrDigit desde la versión 1.0.2

+0

Esta es la respuesta correcta. –

10

Busco una función que verifica sólo si es una de las letras del alfabeto latino o un número decimal Desde char c = 255, que en la versión imprimible es y se considera como una letra por Character.isLetter(c). Esta función Creo que es lo que la mayoría de los desarrolladores están buscando:

private static boolean isLetterOrDigit(char c) { 
    return (c >= 'a' && c <= 'z') || 
      (c >= 'A' && c <= 'Z') || 
      (c >= '0' && c <= '9'); 
} 
0
// check if ch is a letter 
if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) 
    // ... 

// check if ch is a digit 
if (ch >= '0' && ch <= '9') 
    // ... 

// check if ch is a whitespace 
if ((ch == ' ') || (ch =='\n') || (ch == '\t')) 
    // ... 

Fuente: https://docs.oracle.com/javase/tutorial/i18n/text/charintro.html

+0

El código anterior es incorrecto porque funciona solo en inglés y en algunos otros idiomas. Para internacionalizar el ejemplo anterior, reemplácelo con las siguientes afirmaciones: char ch; // ... // ¡Este código está bien! si (Character.isLetter (CH)) // ... si (Character.isDigit (CH)) // ... si (Character.isSpaceChar (CH)) // .. –

+0

OP preguntó claramente 'si un string.charAt (índice) es una letra Az'. Entonces, no estamos hablando de otros idiomas, ¿verdad? – retrazil

0
import java.util.Scanner; 
public class v{ 
public static void main(String args[]){ 
Scanner in=new Scanner(System.in); 
    String str; 
    int l; 
    int flag=0; 
    System.out.println("Enter the String:"); 
    str=in.nextLine(); 
    str=str.toLowerCase(); 
    str=str.replaceAll("\\s",""); 
    char[] ch=str.toCharArray(); 
    l=str.length(); 
    for(int i=0;i<l;i++){ 
     if ((ch[i] >= 'a' && ch[i]<= 'z') || (ch[i] >= 'A' && ch[i] <= 'Z')){ 
     flag=0; 
     } 
     else 

     flag++; 
     break; 
     } 
if(flag==0) 
    System.out.println("Onlt char"); 


} 
} 
+2

Esta no es una respuesta de expresión regular – user7294900

Cuestiones relacionadas