validar que programa minusculas minuscula mayusculas mayuscula manejo funciona equalsignorecase diga contar como cadenas java string

programa - ¿Existe un método de biblioteca existente que compruebe si una cadena es mayúscula o minúscula en Java?



programa que diga si es mayuscula o minuscula java (8)

Sé que hay muchos métodos upper() en Java y otros marcos como Apache commons lang, que convierten una cadena a mayúsculas.

¿Existen bibliotecas comunes que proporcionen un método como isUpper(String s) e isLower(String s) , para verificar si todos los caracteres en el String son mayúsculas o minúsculas?

EDITAR:

Muchas buenas respuestas sobre la conversión a Upper y en comparación con esto. Supongo que debería haber sido un poco más específico y dijo que ya había pensado en eso, pero esperaba poder utilizar un método existente para esto.

Buen comentario sobre la posible inclusión de esto en apache.commons.lang.StringUtils. Alguien incluso ha enviado un parche (20090310). Esperemos ver esto pronto. https://issues.apache.org/jira/browse/LANG-471

EDITAR:

Lo que necesitaba para este método era capitalizar los nombres de los hoteles que a veces aparecían en mayúsculas. Solo quería capitalizarlos si fueran mayúsculas o minúsculas. Me topé con los problemas con los caracteres que no aparecen en las letras mencionados en algunas de las publicaciones, y terminé haciendo algo como esto:

private static boolean isAllUpper(String s) { for(char c : s.toCharArray()) { if(Character.isLetter(c) && Character.isLowerCase(c)) { return false; } } return true; }

Esta discusión y las diferentes soluciones (con diferentes problemas), muestran claramente que existe la necesidad de un buen método sólido esAllUpper (String s) en commons.lang

Hasta entonces, supongo que myString.toUpperCase().equals(myString) es la mejor manera de hacerlo.



Desafortunadamente, no es una función de biblioteca, pero es bastante fácil rodar la tuya. Si la eficiencia es una preocupación, esto podría ser más rápido que s.toUpperCase (). Es igual (s) porque puede rescatarse temprano.

public static boolean isUpperCase(String s) { for (int i=0; i<s.length(); i++) { if (!Character.isUpperCase(s.charAt(i))) { return false; } } return true; }

Edición: Como han señalado otros carteles y comentaristas, debemos considerar el comportamiento cuando la cadena contiene caracteres que no son letras: ¿debería isUpperCase ("HELLO1") devolver verdadero o falso? La función anterior devolverá false porque ''1'' no es un carácter en mayúsculas, pero posiblemente este no sea el comportamiento que desea. Una definición alternativa que se volvería verdadera en este caso sería:

public static boolean isUpperCase2(String s) { for (int i=0; i<s.length(); i++) { if (Character.isLowerCase(s.charAt(i))) { return false; } } return true; }


Esta condición si puede obtener el resultado esperado:

String input = "ANYINPUT"; if(input.equals(input.toUpperCase()) { // input is all upper case } else if (input.equals(input.toLowerCase()) { // input is all lower case } else { // input is mixed case }


Este método puede ser más rápido que comparar una Cadena con su versión en mayúsculas, ya que solo requiere 1 pase:

public static boolean isUpper(String s) { for(char c : s.toCharArray()) { if(! Character.isUpperCase(c)) return false; } return true; }

Tenga en cuenta que puede haber algunos problemas de localización con diferentes conjuntos de caracteres. No tengo ninguna experiencia de primera mano, pero creo que hay algunos idiomas (como el turco) donde diferentes letras minúsculas se pueden asignar a la misma letra mayúscula.


Intenta esto, puede ayudar.

import java.util.regex.Pattern; private static final String regex ="^[A-Z0-9]"; //alpha-numeric uppercase public static boolean isUpperCase(String str){ return Pattern.compile(regex).matcher(str).find(); }

Con este código, simplemente cambiamos la expresión regular.


Los CharMatchers de Guava tienden a ofrecer soluciones muy expresivas y eficientes para este tipo de problema.

CharMatcher.javaUpperCase().matchesAllOf("AAA"); // true CharMatcher.javaUpperCase().matchesAllOf("A SENTENCE"); // false CharMatcher.javaUpperCase().or(CharMatcher.whitespace()).matchesAllOf("A SENTENCE"); // true CharMatcher.javaUpperCase().or(CharMatcher.javaLetter().negate()).matchesAllOf("A SENTENCE"); // true CharMatcher.javaLowerCase().matchesNoneOf("A SENTENCE"); // true

Una importación estática para com.google.common.base.CharMatcher.* Puede ayudar a que estos sean más sucintos.

javaLowerCase().matchesNoneOf("A SENTENCE"); // true


No que yo sepa.

Puede copiar la cadena y convertir la copia a mayúsculas / minúsculas y compararla con la original.

O cree un bucle que verifique los caracteres individuales si están en mayúsculas o minúsculas.


Puede usar java.lang.Character.isUpperCase () Luego, puede escribir fácilmente un método que verifique si su cadena está en mayúsculas (con un simple bucle).

Enviar el mensaje a UpperCase () a su cadena y luego verificar si el resultado es igual a su cadena probablemente será más lento.