162 votes

Comment vérifier si un caractère est une lettre en Javascript ?

Je suis en train d'extraire un caractère dans une chaîne Javascript avec :

var first = str.charAt(0);

et je voudrais vérifier si c'est une lettre. Étrangement, il ne semble pas que cette fonctionnalité existe en Javascript. Du moins, je ne la trouve pas.

Comment puis-je tester cela ?

4 votes

Créer un numéro et le tester par rapport à NaN ? Ou simplement isNan(first) Je suppose.

6 votes

@Marc Si ce caractère était '-' par exemple, votre test n'indiquerait pas que c'est une lettre...

2 votes

Définir "lettre" ? L'alpha anglais seulement, ou autre chose ? Voulez-vous faire une "liste noire" ou une "liste blanche" ?

0voto

HawVie Points 11

Une autre possibilité consiste à utiliser la bibliothèque Propriétés unicodes . La bibliothèque prend en charge la version 12 d'Unicode. Dans cet exemple, la bibliothèque renvoie le code catégorie de caractère pour une chaîne de caractères donnée. Il vérifie ensuite si le premier caractère de la catégorie est égal à 'L' (qui signifie évidemment lettre).

var unicode = require("unicode-properties");
let str = "E";
console.log(unicode.getCategory(str.charCodeAt(0)).charAt(0) === "L"); // True

-1voto

Roshan Rijal Points 17
// to check if the given string contain alphabets    
function isPangram(sentence){
        let lowerCased = sentence.toLowerCase();
        let letters = "abcdefghijklmnopqrstuvwxyz";
        // traditional for loop can also be used
        for (let char of letters){
            if (!lowerCased.includes(char)) return false;
        }
        return true;
    }

2 votes

Unicode compte actuellement 128 000 caractères couvrant 135 alphabets. Ces 26 caractères ne constituent qu'un tout petit sous-ensemble de ceux-ci.

-1voto

PedroProgrammer Points 17

J'ai créé une fonction pour faire cela :

var isLetter = function (character) {
  if( (character.charCodeAt() >= 65 && character.charCodeAt() <= 90) || (character.charCodeAt() >= 97 && character.charCodeAt() <= 122) ) {
    return true;
  }
  else{
    return false;
  }
}

Cela permet de vérifier dans la table ASCII si le code du caractère correspond à une lettre.

Vous pouvez voir le tableau ASCII sur ce lien et comparer les colonnes DEC (où se trouve le code) et symbole : https://www.ascii-code.com/

Note : Ma fonction est vraie seulement pour les lettres "simples" (des choses comme "Á", "é", "ç", "Ü" elle retournera faux... mais si vous avez besoin vous pouvez adapter cette fonction pour d'autres conditions).

-1voto

Alexa-905 Points 54

Il est possible de savoir si le caractère est une lettre ou non en utilisant une fonction standard intégrée. isNaN o Nombre.isNaN() de l'ES6 :

isNaN('s') // true
isNaN('-') // true
isNaN('32') // false, '32' is converted to the number 32 which is not NaN

Il retransmet true si la valeur donnée n'est pas un nombre, sinon false.

0 votes

Intelligent, mais je ne suis pas sûr que ce soit une réponse suffisante... Marc a également suggéré ceci dans les commentaires...

0 votes

Var sn = "string indijf &" ; var nn = isNaN(sn) document.getElementByID("demo").innerHTML = nn ; Je passe des nombres ou des caractères spéciaux qui renvoient toujours vrai. pouvez-vous ajouter des réponses plus détaillées ?

1 votes

Dans quel alphabet le "-" est-il une lettre ?

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