148 votes

Comment puis-je vérifier qu'une chaîne de caractères Java ne comporte pas que des espaces ?

Je veux vérifier que la chaîne ou le tableau de caractères Java n'est pas uniquement composé d'espaces, en utilisant Java ?

C'est une question très similaire, sauf qu'il s'agit de Javascript :
Comment puis-je vérifier si une chaîne contient des caractères et des espaces, et pas seulement des espaces ?

EDIT : J'ai supprimé la partie concernant les caractères alphanumériques, pour que ce soit plus logique.

3 votes

Sachez qu'il existe de nombreuses définitions différentes de l'espace blanc : spreadsheets.google.com/pub?key=pd8dAQyHbdewRsnE5x5GzKQ Lequel voulez-vous ? Ou alors vous dites "a un caractère alphanumérique", ce qui est une chose complètement différente. Veuillez clarifier.

0 votes

Je vous prie de m'excuser pour la confusion ... la clé est de ne pas utiliser tous les espaces - en fait, s'il y a tous les espaces, je veux l'exclure, car il n'y a pas de contenu.

2 votes

Avec JDK/11, vous pouvez utiliser le String.isBlank API pour la même chose.

235voto

Carl Smotricz Points 36400

La solution la plus courte à laquelle je peux penser :

if (string.trim().length() > 0) ...

Cela ne vérifie que les espaces (non) blancs. Si vous voulez vérifier la présence de classes de caractères particulières, vous devez utiliser la puissante fonction match() avec un regexp tel que :

if (string.matches(".*\\w.*")) ...

...qui vérifie la présence d'au moins un caractère alphanumérique (ASCII).

9 votes

Pour info : je m'attendrais à ce que la première solution soit considérablement plus rapide.

2 votes

@Stephen C : Absolument ! Mais comme @Uri l'a souligné, je dois résoudre deux problèmes différents en raison de l'ambiguïté de la question :) De plus, j'utilise rarement matches() pour des raisons de performance, je stocke généralement les Pattern dans un final static . C'est payant si le même code est utilisé fréquemment.

0 votes

Carl - Attention, il y en a un. string == null à venir ! - Aïe - NPE - ça fait mal ;-))

65voto

Chris J Points 3923

J'utiliserais la bibliothèque Apache Commons Lang. Elle possède une classe appelée StringUtils qui est utile pour toutes sortes d'opérations sur les chaînes. Pour vérifier si une chaîne n'est pas entièrement composée d'espaces, vous pouvez utiliser ce qui suit :

StringUtils.isBlank(<your string>)

Voici la référence : StringUtils.isBlank

10 votes

Je préfère cette solution à l'utilisation de la réponse choisie. Cette solution vérifiera également si la chaîne de caractères == null

0 votes

Ceci est maintenant incorrect. StringUtils.isEmpty retournera maintenant false si vous passez dans " ".

55voto

redslime Points 81

Légèrement plus court que ce qui a été mentionné par Carl Smotricz :

!string.trim().isEmpty();

11 votes

Vous, jeunes prodiges, et vos nouvelles astuces post-Java 1.6 ! Sérieusement, au moins un projet dans mon entreprise fonctionne encore sur Java 1.4 (soupir).

0 votes

Plus court ? Oui. Personnellement, j'aime le style de codage plus verbeux.

22voto

2 votes

Hmm, mon compilateur ne reconnaît pas cette méthode dans StringUtils.

4voto

whiskeysierra Points 2175

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