¿Cuál es la mejor y / o más fácil forma de reconocer si un string.charAt (index) es una letra Az o un número en Java sin usar expresiones regulares? Gracias.
¿Cuál es la mejor y / o más fácil forma de reconocer si un string.charAt (index) es una letra Az o un número en Java sin usar expresiones regulares? Gracias.
Respuestas:
Character.isDigit(string.charAt(index))
( JavaDoc ) devolverá verdadero si es un dígito
Character.isLetter(string.charAt(index))
( JavaDoc ) devolverá verdadero si es una letra
Character.isLetterOrDigit(string.charAt(index))
tanto para las verificaciones.
Estoy buscando una función que verifique solo si es una de las letras latinas o un número decimal. Desde entonces char c = 255
, que en la versión imprimible es ├ y se considera como una letra por Character.isLetter(c)
. Creo que esta función es lo que buscan la mayoría de los desarrolladores:
private static boolean isLetterOrDigit(char c) {
return (c >= 'a' && c <= 'z') ||
(c >= 'A' && c <= 'Z') ||
(c >= '0' && c <= '9');
}
u00ff
es en realidad el carácter ÿ. (Minúscula y con una diéresis). El punto de código que representa ├ es u251c
.
if (c in 'a'..'z' || с in 'A'..'Z' || c in '0'..'9')
Como indican las respuestas (¡si las examina cuidadosamente!), Su pregunta es ambigua. ¿Qué quieres decir con "una letra Az" o un dígito?
Si desea saber si un carácter es una letra o dígito Unicode , utilice los métodos Character.isLetter
y Character.isDigit
.
Si desea saber si un carácter es una letra o dígito ASCII , lo mejor que puede hacer es realizar una prueba comparando con los rangos de caracteres 'a' a 'z', 'A' a 'Z' y '0' a '9'.
Tenga en cuenta que todas las letras / dígitos ASCII son letras / dígitos Unicode ... pero hay muchas letras / dígitos Unicode que no son ASCII. Por ejemplo, letras acentuadas, cirílicas, sánscritas, ...
La solución general es hacer esto:
Character.UnicodeBlock block = Character.UnicodeBlock.of(someCodePoint);
y luego pruebe para ver si el bloque es uno de los que le interesan. En algunos casos, deberá probar varios bloques. Por ejemplo, hay (al menos) 4 bloques de código para caracteres cirílicos y 7 para latín. La Character.UnicodeBlock
clase define constantes estáticas para bloques conocidos; ver los javadocs .
Tenga en cuenta que cualquier punto de código estará como máximo en un bloque.
La clase de caracteres Java tiene un método isLetterOrDigit desde la versión 1.0.2
No sé lo mejor, pero esto me parece bastante 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'))
// ...
Fuente: https://docs.oracle.com/javase/tutorial/i18n/text/charintro.html
if a string.charAt(index) is an A-z letter
. ¿Entonces no estamos hablando de otros idiomas?
Compara su valor. Debe estar entre el valor de 'a' y 'z', 'A' y 'Z', '0' y '9'
Character.isLetter()
método incorporado ?
Character.isLetter()
es rudimentario. ¿A menos que estemos hablando de internacionalización?
Usa el siguiente código
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");
}
}