196 votes

Quel est le meilleur moyen de savoir si un caractère est une lettre ou un chiffre en Java sans utiliser de regex ?

Quel est le meilleur moyen et/ou le plus facile de reconnaître si une chaîne de caractères.charAt(index) est une lettre A-z ou un chiffre en Java sans utiliser d'expressions régulières ? Merci.

9voto

Ram Repaka Points 4

Utilisez le code ci-dessous

Character.isLetterOrDigit(string.charAt(index))

2 votes

Qu'est-ce que votre réponse ajoute qui n'a pas été couvert dans les réponses précédentes ?

1 votes

Attention, isLetterOrDigit donne vrai sur bien plus que a-Z0-9 ! !! référez-vous à la doc ici docs.oracle.com/javase/7/docs/api/java/lang/

0 votes

Robert, au lieu d'appeler deux fonctions, vous pouvez bien sûr n'en appeler qu'une seule.

8voto

vadasambar Points 204
// 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'))
    // ...

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

1 votes

Le code précédent est erroné car il ne fonctionne qu'avec l'anglais et quelques autres langues. Pour internationaliser l'exemple précédent, remplacez-le par les instructions suivantes : char ch ; // ... // Ce code est correct ! if (Character.isLetter(ch)) // ... if (Character.isDigit(ch)) // ... if (Character.isSpaceChar(ch)) // ...

0 votes

Le PO a clairement demandé if a string.charAt(index) is an A-z letter . Nous ne parlons donc pas d'autres langues, n'est-ce pas ?

0 votes

En allemand, par exemple, un ä peut être considéré comme se situant dans la gamme a-z.

5voto

YuppieNetworking Points 3417

Comparez sa valeur. Elle doit être comprise entre les valeurs "a" et "z", "A" et "Z", "0" et "9".

1 votes

Cette approche manuelle est meilleure que l'approche intégrée Character.isLetter() méthode ?

1 votes

@IgorGanapolsky - Cela dépend précisément de ce que vous essayez de faire. Indice : ils font des choses différentes !

0 votes

@StephenC Je pensais Character.isLetter() est rudimentaire. À moins que nous ne parlions d'internationalisation ?

0voto

Gowtham Prasath Points 21
 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");

}
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X