¿Cómo puedo probar si una letra en una cadena es mayúscula o minúscula usando JavaScript?
javascript
Joe
fuente
fuente
[:upper:]
) es rápida y muy interesante, excepto que no funciona, vea mi comentario a continuación y mi jsperf.com/isupper-comparison/7 corregido .str == str.toUpperCase();
devuelve verdadero o falsoRespuestas:
La respuesta de josh y maleki devolverá verdadero en mayúsculas y minúsculas si el carácter o toda la cadena es numérica. haciendo que el resultado sea falso. ejemplo usando josh
otra forma es probarlo primero si es numérico, de lo contrario, pruébelo si se trata de mayúsculas o minúsculas
fuente
!
son numéricos.var character='';
fuente
Esto registrará verdadero si el carácter es letra mayúscula y falso en cualquier otro caso:
Puede probarlo aquí: http://jsfiddle.net/Axfxz/ (use Firebug o sth).
y esto es para minúsculas :).
fuente
El problema con las otras respuestas es que algunos caracteres, como los números o la puntuación, también son verdaderos cuando se verifican en minúsculas / mayúsculas.
Encontré que esto funciona muy bien para ello:
Esto funcionará para puntuación, números y letras:
Para verificar una letra solo llámela usando
isLowerCase(str[charIndex])
fuente
luego :
fuente
Puede utilizar una prueba de expresión regular y el
toUpperCase
método:Ver también
fuente
&& chr === chr.toUpperCase();
?\u0080-\u024F
puede contener signos diacríticos en minúsculas, por lo que la prueba también debe verificar el personaje en sí.fuente
Más específicamente a lo que se pregunta. Pase en una cadena y una posición para verificar. Muy cerca de Josh, excepto que este comparará una cadena más grande. Habría agregado como comentario pero todavía no tengo esa habilidad.
fuente
También puede usar una expresión regular para detectar explícitamente caracteres alfabéticos romanos en mayúsculas.
EDITAR: la función anterior es correcta para ASCII / Basic Latin Unicode, que es probablemente todo lo que le interesará. La siguiente versión también admite bloques Latin-1 Supplement y Unicode griego y copto ... En caso de que lo necesite por alguna razón.
Esta estrategia comienza a fallar si necesita más soporte (¿es Ѭ mayúscula?) Ya que algunos bloques entremezclan caracteres mayúsculas y minúsculas.
fuente
.toLowerCase()
o.toUpperCase()
se prefiere, ya que admite internamente la mayoría de las configuraciones regionales.Una buena respuesta a esta pregunta debe ser sucinta, manejar unicode correctamente y lidiar con cadenas vacías y nulos.
Este enfoque trata primero con cadenas vacías y nulos, luego asegura que la conversión de la cadena dada a minúsculas cambia su igualdad. Esto garantiza que la cadena contenga al menos una letra mayúscula de acuerdo con las reglas de mayúsculas locales actuales (y no devolverá falsos positivos para números y otros glifos que no tengan mayúsculas).
La pregunta original se hizo específicamente sobre la prueba del primer personaje. Para mantener su código simple y claro, separé el primer carácter de la cadena por separado de la prueba de si es mayúscula.
fuente
Hay una respuesta realmente simple, que nadie más ha mencionado:
Si
str.toUpperCase()
no devuelve lo mismostr
, tiene que estar en minúsculas. Para probar mayúsculas, cámbielo astr !== str.toLowererCase()
.A diferencia de otras respuestas, funciona correctamente en caracteres no alfa (retornos
false
) y funciona para otros alfabetos, caracteres acentuados, etc.fuente
"É"
no es minúscula.fuente
return (ch.charCodeAt() >= 65 && ch.charCodeAt() <= 90)
.La mejor manera es usar una expresión regular, un operador ternario y el
.test()
método incorporado para cadenas.Te dejo en Google los entresijos de las expresiones regulares y el método de prueba para cadenas (son fáciles de encontrar), pero aquí lo usaremos para probar tu variable.
Esto devolverá VERDADERO o FALSO en función de si su personaje coincide o no con el conjunto de caracteres en la expresión regular. Nuestra expresión regular verifica todas las letras az
/[a-z]/
independientemente de su caso gracias a lai
bandera.Entonces, una prueba básica sería:
Ahora necesitamos determinar si es mayúscula o minúscula. Entonces, si eliminamos la
i
bandera de nuestra expresión regular, nuestro código anterior probará las letras minúsculas az. Y si pegamos otraif
declaración enelse
nuestra primeraif
declaración, también podemos probar mayúsculas usando AZ. Me gusta esto:Y en caso de que no sea una carta, podemos agregar una declaración final de else:
El código anterior funcionaría. Pero es un poco feo. En cambio, podemos usar un "operador ternario" para reemplazar nuestras
if-else
declaraciones anteriores. Los operadores ternarios son simplemente formas simples de codificar unif-else
. La sintaxis es fácil:Y estos también pueden estar anidados uno dentro del otro. Entonces una función podría verse así:
El código anterior se ve bien, pero no funcionará del todo, porque si nuestro carácter está en minúsculas,
theAnswer
se establece en "" cuando prueba en mayúsculas, así que vamos a anidarlas:¡Eso funcionará genial! Pero no es necesario tener dos líneas separadas para configurar la variable
theAnswer
y luego devolverla. Y deberíamos usarlet
y enconst
lugar devar
(búsquelos si no está seguro de por qué) Una vez que hacemos esos cambios:Y terminamos con un código elegante y conciso. ;)
fuente
Esta es una solución sencilla y legible que utiliza una expresión regular simple.
fuente
Puede probar si su matriz tiene una cadena en mayúscula o minúscula utilizando el método de coincidencia y la expresión regular, a continuación se muestra solo una base básica para comenzar su prueba
fuente
También puede usar esto, verificará la cadena en minúsculas y mayúsculas
fuente
Esto verifica la cadena COMPLETA, no solo la primera letra. Pensé en compartirlo con todos aquí.
Aquí hay una función que usa una expresión regular para probar contra las letras de una cadena; devuelve verdadero si la letra es mayúscula (AZ). Luego reducimos la matriz verdadero / falso a un solo valor. Si es igual a la longitud de la cadena, eso significa que todas las letras pasaron la prueba de expresión regular, lo que significa que la cadena es mayúscula. Si no, la cadena es minúscula.
fuente
Así es como lo hice recientemente:
1) Verifique que un char / string
s
sea minúsculas.toLowerCase() == s && s.toUpperCase() != s
2) El cheque
s
es mayúsculas.toUpperCase() == s && s.toLowerCase() != s
Cubre casos donde
s
contiene caracteres no alfabéticos y diacríticos.fuente
Defina una función checkCharType (). Al declarar la variable returnValue e inicializarla en el carácter "O" para indicar que es algún otro valor.
U para mayúsculas; L para minúsculas; N para número
Use el método charCodeAt () para obtener el código de caracteres del primer carácter.
Usando la instrucción if, que verifica dentro de qué rango de valores cae el código de caracteres.
Si se encuentra entre los códigos de caracteres para A y Z, en mayúsculas, el código de caracteres entre a y z, en minúsculas. y así.
"A" .charCode (0)
var myChar = nueva cadena ("A"); myChar.charCodeAt (0); "A": código de número "65"
fuente
Esta pregunta claramente ha sido respondida varias veces, pero pensé que compartiría mi solución ya que no la he visto en las respuestas dadas.
2 ¢
fuente
Vea mi comentario sobre la respuesta elegida. Otras soluciones que se limitan a la tabla ASCII o usan los literales de caracteres reales ignoran completamente Unicode y los varios cientos de otros caracteres que tienen mayúsculas y minúsculas.
Este código establecerá la variable caseGroup en:
0 para sin estuche
Podrías convertir eso en algo como esto ...
fuente
Basado en el comentario de Sonic Beard a la respuesta principal. Cambié la lógica en el resultado:
0: minúsculas
1 mayúscula
-1: ninguno
fuente
Otra forma es comparar el personaje con un objeto vacío, realmente no sé por qué funciona, pero funciona:
entonces en una función:
EDITAR : no funciona con acentos y signos diacríticos, por lo que es posible eliminarlo
fuente
[object Object]
. Básicamente estás verificando si el código de caracteres de la letra viene antes[
. Dado que los códigos de caracteres paraZ, [, a
son90, 91, 97
respectivamente, la comparación es verdadera para letras mayúsculas y falsa para letras minúsculas. En otras palabras, es una manera igualmente hacky de hacerlo como usar números de base 36 para obtener las letras del alfabeto.character.normalize("NFD").replace(/[\u0300-\u036f]/g
Si se asume que una cadena única se considera no estar en mayúsculas si al menos una letra minúscula está presente, esto funciona bien. Entiendo que no es conciso y conciso como todos los demás intentaron hacer, pero funciona =)
fuente
Uno que uso (observe que esto no hace "TestString" como "T est String" o "Test String").
fuente
Necesito probar una cadena de cualquier carácter (incluidos espacios en blanco, marcas, números, caracteres unicode ...). Debido a que el espacio en blanco, los números, las marcas ... serán iguales en mayúsculas y minúsculas, y quiero encontrar letras mayúsculas reales, hago esto:
fuente
Simplemente verifique el valor ASCII
fuente
La función de Stephen Nelsons se convirtió en un prototipo con muchos ejemplos de prueba.
También he agregado cadenas completas a la función para completar.
Ver código para comentarios adicionales.
fuente
fuente
fuente