Salut les gars, j'ai besoin de savoir s'il y a une validation de prédicat dans java qui vérifie si la chaîne contient des nombres. Je veux autoriser les caractères spéciaux mais pas de nombres ni d'espaces. Il y a des prédicats qui vérifient les alphabets mais ils ne permettent pas les caractères spéciaux, j'ai besoin de quelque chose qui n'accepte que les alphabets et les caractères spéciaux et renvoie false si la chaîne contient des espaces ou des nombres.Chaîne Prédicats à valider si une chaîne contient une valeur numérique en java
Répondre
Je vais utiliser une regex pour montrer ma compréhension de la question. Vous voulez un Predicate<String>
qui retourne vrai pour toute chaîne correspondant à
[a-zA-Z_]*
Une façon de le faire est regexlessly d'utiliser une boucle et vérifier chaque caractère:
Predicate<String> predicate = x -> {
for (int i = 0 ; i < x.length() ; i++) {
if (!Character.isLetter(x.charAt(i)) && !x.charAt(i) == '_') {
return false;
}
}
return true;
};
Voici une méthode qui fait la même chose:
public static boolean test(String x) {
for (int i = 0 ; i < x.length() ; i++) {
if (!Character.isLetter(x.charAt(i)) && !x.charAt(i) == '_') {
return false;
}
}
return true;
}
Chaîne à vérifier ici est x si je ne me trompe pas ?? – Alex
Vous pouvez l'utiliser comme ceci: 'predicate.test (" Votre chaîne ")'. Vous avez dit que vous vouliez un prédicat alors je vous en ai donné un. Voulez-vous une méthode ou quelque chose? @Alex – Sweeper
Oui, je suis un peu nouveau chez Predicates donc une réponse détaillée serait appréciée! – Alex
Quelle est votre définition des caractères spéciaux? – shmosel
Un soulignement pour être précis, mais je veux éviter d'utiliser Regex !! – Alex
Pourquoi voudriez-vous éviter regex? – shmosel