569 votes

Comment vérifier si une chaîne n’est pas null & vide ?

Dans mon application web, j’ai un champ de recherche où obtenir une chaîne de caractères et une zone de liste déroulante. Alors, je vous envoie deux arguments à la fonction remote.

Je veux vérifier que l’entrée d’utilisateur n’est pas null et non vide. Ainsi, alors je peux construire une requête valide.

Toutes les suggestions ?

1002voto

Colin Hebert Points 40084

Qu'en est isEmpty() ?

if(str != null && !str.isEmpty())

Assurez-vous d'utiliser les pièces d' && dans cet ordre, parce que java ne seront pas procéder à l'évaluation de la deuxième, si la première partie de l' && d'échec, assurant ainsi vous n'obtiendrez pas une exception de pointeur null à partir de str.isEmpty() si str a la valeur null.

Méfiez-vous, il est seulement disponible depuis Java SE 1.6. Vous devez vérifier, str.length() == 0 sur les versions précédentes.

249voto

romaintaz Points 32120

J’aime utiliser Apache commons-lang pour ces sortes de choses et particulièrement la classe d’utilitaire StringUtils :

105voto

phreakhead Points 2265

Tout ajout d’Android ici :

51voto

Adam Gent Points 15055

Pour ajouter à @BJorn et @SeanPatrickFloyd La Goyave façon de le faire est:

Strings.nullToEmpty(str).isEmpty(); 
// or
Strings.isNullOrEmpty(str);

Commons Lang est plus lisible à la fois, mais j'ai été lentement en s'appuyant davantage sur la Goyave et parfois Commons Lang est confus quand il s'agit de isBlank() (comme en ce qui est des espaces ou pas).

La goyave est la version de Communes Lang isBlank serait:

Strings.nullToEmpty(str).trim().isEmpty()

Je vais dire le code qui ne permet pas de "" (vide) ET null est douteuse, et potentiellement buggy dans sans doute qu'il ne gère pas tous les cas où n'est pas ce qui null de bon sens (même si pour le SQL, je peux comprendre que SQL/requêtes HQL est bizarre à propos de '').

34voto

helios Points 8379
str != null && str.length() != 0

sinon

str != null && !str.equals("")

ou

str != null && !"".equals(str)

Remarque: La deuxième case (première et deuxième solutions de rechange), ce qui suppose str n'est pas nulle. C'est ok seulement parce que la première case est cela (et Java n'a pas fait la deuxième case si le premier est faux)!

IMPORTANT: N'utilisez PAS de == pour la chaîne de l'égalité. == vérifie le pointeur est égal, non pas la valeur. Deux chaînes de caractères peuvent être différentes des adresses de mémoire (deux cas), mais ont la même valeur!

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