J'ai une question sur la validation en Java, j'ai regardé le sujet précédent et aucun ne semble répondre à mon petit problème. Ce que j'essaie de faire est de valider ce qui est mis dans une variable de chaîne dans le constructeur mais aussi quand une méthode set est utilisée. Ce dont j'ai besoin est si M. Mlle Mme ou Mme est entré, alors pour mettre cela dans une variable (titre) sinon alors pour définir le titre comme «non défini» et imprimer une erreur, maintenant je sais comment à la dernière partie, c'est la validation de ce que l'utilisateur entre dans la variable dans laquelle je suis coincé ... J'ai essayé d'utiliser un tableau mais je n'ai pas réussi à le faire fonctionner et essayé si les instructions, encore une fois ne pouvaient pas de fonctionnerValider une chaîne en Java
Répondre
public void setTitle(final String title)
{
if (title.matches("^Mrs|Mr|Miss|Ms$"))
{
this.title = title;
}
else
{
this.title = "Not Set";
System.err.format("%s is not a valid title, expecting Mrs,Mr,Miss,Ms\n", title);
}
}
si vous voulez faire insensible à la casse, puis modifier l'expression régulière à:
"(?i)^Mrs|Mr|Miss|Ms$"
alors vous pouvez juste minuscules la chose entière et majuscules que la première lettre à re-normaliser votre entrée à ce que vous voulez vraiment. Google pour "java case" pour trouver des extraits de code pré-écrits.
Une plus concise un liner, cas encore sensible:
public void setTitle(final String title)
{
title.matches("^Mrs|Mr|Miss|Ms$")) ? this.title= title: this.title= "Not Set";
}
J'aime mieux cette réponse ... est assez flexible avec Regexp! – Necronet
Utilisez cette
String title = textBoxTitle.getText();
if(!title.equals("Mr") && !title.equals("Miss") && !title.equals("Mrs") && !title.equals("Ms"))
{
// Text is invalid
}
else
{
// Text is valid
}
Les tests négatifs sont difficiles à lire et à comprendre du point de vue de la maintenance, pourquoi ne pas tester des équivalents || est égal à || ce serait mieux qu'un test négatif comme celui-ci. –
pourquoi ne pas simplement appeler une petite méthode qui fait la validation et définit la valeur?
private void validateString(String) {
if string is valid
call setter
}
ou transformer cela en 'validateAndSet()' et appeler à la fois ctor et setter publique – Anon
un nom de méthode ne devrait pas avoir un effet latéral qui n'est pas attendu, c'est un nom terrible. les méthodes devraient faire une chose et une seule chose, le fonctionnement interne devrait être une boîte noire, il n'y a absolument aucune raison d'avoir "valider" au nom de la méthode. Tout le visiteur devrait être concerné par le résultat final. si vous deviez l'appeler 'isValidPrefix' qui retournerait alors un vrai ou un faux, ce serait mieux, car c'est horrible. –
je suis assez sûr que u fait quelque chose comme -
if(title =="Mr."){ blah.. } // this will check the address
do this instead ..
if(title.equals("Mr."){blah..} // this will check the values..
C'est ce que j'ai fait quand j'ai vu '' title.equals '' J'ai réalisé ce que je faisais de mal. – Chris
Créer un ensemble de mots que vous vous souciez (les mettre en majuscule), puis voir si le titre tombe dans l'ensemble:
Set allowedTitles = new HashSet();
allowedTitles.add("MR");
allowedTitles.add("MRS");
allowedTitles.add("MS");
allowedTitles.add("MISS");
if (! allowedTitles.contains(textBoxTitle.getText().trim().toUpperCase()) {
//print exception
}
else { title = textBoxTitle.getText().trim());
vérification de la capitalisation est une mauvaise idée à cause de l'Unicode, les majuscules en Unicode peuvent être problématiques, les minuscules de l'autre ont été normalisées pour les mêmes caractères. aussi la question originale les veut dans le bon cas, ils ne précisent rien sur l'insensibilité à la casse. –
Assez juste. Utilisez toLowerCase() puis. Je pense que le downvote est un peu dur, car le concept était d'utiliser "contient". Si le cas n'est pas un problème, alors ne vous en souciez pas, évidemment. –
- 1. Valider une instruction à partir d'une chaîne en Java
- 2. Comment valider une chaîne en utilisant regex dans Java
- 3. Valider l'URL en Java
- 4. Valider une chaîne
- 5. Comment valider une locale dans java?
- 6. Valider une chaîne GET tout en utilisant des caractères spéciaux?
- 7. Valider un XSD en utilisant Java
- 8. Valider la réponse Java SAML en C#
- 9. Rediriger stdout vers une chaîne en Java
- 10. Convertir une chaîne en double - Java
- 11. Java convertir une chaîne HEX en BigInt
- 12. Ellipse automatiquement une chaîne en Java
- 13. Comment échapper une chaîne en Java?
- 14. Convertir une chaîne Java en tableau
- 15. Valider en utilisant un élément de XSD dans Java
- 16. Convertir une chaîne de base25 à chaîne binaire en Java
- 17. Chaîne convertion en java
- 18. Valider avec Zend_Validate_Date sur une chaîne de temps
- 19. Fractionner une chaîne contenant des paramètres de ligne de commande en une chaîne [] en Java
- 20. En utilisant une chaîne sur tout le programme en Java?
- 21. Comment retourner une chaîne java en C++ en utilisant JNI
- 22. Comment transformer une chaîne en InputStreamReader en java?
- 23. Convertir une chaîne en flux d'entrée XML en Java
- 24. Comment convertir une chaîne en RegularTimePeriod en java?
- 25. En Java, comment transformer une chaîne en char ou en char en chaîne?
- 26. chaîne Décompresser GZip en Java
- 27. Conversion Unicode en chaîne Java
- 28. Chaîne en bitmap java/android
- 29. Création de chaîne en Java
- 30. split chaîne complexe en Java
publiez votre code [édité]. – hvgotcodes