Quel est le moyen le meilleur et / ou le plus simple de reconnaître si une chaîne.charAt (index) est une lettre Az ou un nombre en Java sans utiliser d'expressions régulières? Merci.
Quel est le moyen le meilleur et / ou le plus simple de reconnaître si une chaîne.charAt (index) est une lettre Az ou un nombre en Java sans utiliser d'expressions régulières? Merci.
Réponses:
Character.isDigit(string.charAt(index))
( JavaDoc ) retournera vrai si c'est un chiffre
Character.isLetter(string.charAt(index))
( JavaDoc ) retournera vrai s'il s'agit d'une lettre
Character.isLetterOrDigit(string.charAt(index))
pour les deux vérifications.
Je recherche une fonction qui vérifie uniquement s'il s'agit d'une des lettres latines ou d'un nombre décimal. Depuis char c = 255
, qui en version imprimable est ├ et considéré comme une lettre par Character.isLetter(c)
. Cette fonction, je pense, est ce que la plupart des développeurs recherchent:
private static boolean isLetterOrDigit(char c) {
return (c >= 'a' && c <= 'z') ||
(c >= 'A' && c <= 'Z') ||
(c >= '0' && c <= '9');
}
u00ff
est en fait le caractère ÿ. (Y minuscule avec un tréma.) Le point de code qui représente ├ est u251c
.
if (c in 'a'..'z' || с in 'A'..'Z' || c in '0'..'9')
Comme l'indiquent les réponses (si vous les examinez attentivement!), Votre question est ambiguë. Qu'entendez-vous par "une lettre Az" ou un chiffre?
Si vous voulez savoir si un caractère est une lettre ou un chiffre Unicode , utilisez les méthodes Character.isLetter
et Character.isDigit
.
Si vous voulez savoir si un caractère est une lettre ou un chiffre ASCII , la meilleure chose à faire est de tester en comparant avec les plages de caractères 'a' à 'z', 'A' à 'Z' et '0' à «9».
Notez que toutes les lettres / chiffres ASCII sont des lettres / chiffres Unicode ... mais il existe de nombreuses lettres / chiffres Unicode qui ne sont pas ASCII. Par exemple, lettres accentuées, cyrillique, sanskrit, ...
La solution générale est de faire ceci:
Character.UnicodeBlock block = Character.UnicodeBlock.of(someCodePoint);
puis testez pour voir si le bloc est l'un de ceux qui vous intéressent. Dans certains cas, vous devrez tester plusieurs blocs. Par exemple, il existe (au moins) 4 blocs de code pour les caractères cyrilliques et 7 pour le latin. La Character.UnicodeBlock
classe définit des constantes statiques pour des blocs bien connus; voir les javadocs .
Notez que tout point de code sera dans au plus un bloc.
La classe Java Character a une méthode isLetterOrDigit depuis la version 1.0.2
Je ne sais pas ce qu'il y a de mieux, mais cela me semble assez simple:
Character.isDigit(str.charAt(index))
Character.isLetter(str.charAt(index))
// 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
if a string.charAt(index) is an A-z letter
. Alors on ne parle pas d'autres langues n'est-ce pas?
Comparez sa valeur. Il doit être compris entre les valeurs «a» et «z», «A» et «Z», «0» et «9»
Character.isLetter()
méthode intégrée ?
Character.isLetter()
rudimentaire. À moins que l'on ne parle d'internationalisation?
Utilisez le code ci-dessous
Character.isLetterOrDigit(string.charAt(index))
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");
}
}