68 votes

Comment trouver les espaces dans une chaîne de caractères ?

Comment puis-je vérifier si une chaîne contient un caractère d'espacement, un espace vide ou " ". Si possible, veuillez fournir un exemple en Java.

Par exemple : String = "test word";

3 votes

Qu'est-ce que l'espace vide ? Est-ce " " ?

10 votes

@Dominic - c'est ce qu'on obtient quand on vide un "espace plein". Duh !!!

92voto

Mark Byers Points 318575

Pour vérifier si une chaîne de caractères contient des espaces utiliser un Matcher et appeler sa méthode de recherche.

Pattern pattern = Pattern.compile("\\s");
Matcher matcher = pattern.matcher(s);
boolean found = matcher.find();

Si vous voulez vérifier s'il n'est constitué que d'espaces blancs vous pouvez alors utiliser String.matches :

boolean isWhitespace = s.matches("^\\s*$");

2 votes

La chaîne vide contient-elle des espaces blancs ? bool devrait être boolean je pense.

0 votes

\\s c'est ce que je cherchais, merci

33voto

Sean Patrick Floyd Points 109428

Vérifie si une chaîne contient au moins un caractère d'espacement :

public static boolean containsWhiteSpace(final String testCode){
    if(testCode != null){
        for(int i = 0; i < testCode.length(); i++){
            if(Character.isWhitespace(testCode.charAt(i))){
                return true;
            }
        }
    }
    return false;
}

Référence :


L'utilisation de la Goyave la bibliothèque, c'est beaucoup plus simple :

return CharMatcher.WHITESPACE.matchesAnyOf(testCode);

CharMatcher.WHITESPACE est également beaucoup plus complet en ce qui concerne la prise en charge de l'Unicode.

4 votes

Je suppose que ce code n'est pas totalement unicode, car : This method cannot handle supplementary characters. To support all Unicode characters, including supplementary characters, use the isWhitespace(int) method.

0 votes

C'est vrai, mais je me demande combien de nouveaux caractères d'espacement sont définis dans les gammes Unicode au-delà de l'espacement. 0xffff ...

2 votes

Je n'en ai absolument aucune idée, je l'ai mentionné uniquement par souci d'exhaustivité.

25voto

Bozho Points 273663

Cela vous permettra de savoir s'il y a tous les espaces blancs :

Soit par bouclage :

for (char c : s.toCharArray()) {
    if (Character.isWhitespace(c)) {
       return true;
    }
}

o

s.matches(".*\\s+.*")

Et StringUtils.isBlank(s) vous dira s'il y a des seulement les espaces blancs.

2 votes

Belle réponse complète (+1), mais la variante en boucle peut être réalisée sans créer un nouveau tableau de caractères (voir ma réponse).

0 votes

@seanizer vrai. +1 pour vous :)

0 votes

Note : la méthode isWhitespace ne prend pas en compte les espaces non sécables

3voto

thejh Points 20901

Essayer

boolean containsWhitespace = mystring.indexOf(" ")!=-1

2voto

lll Points 5381

Vous pouvez utiliser Regex pour déterminer s'il y a un caractère d'espacement. \s .

Plus d'informations sur les expressions rationnelles aquí .

0 votes

Vous pourriez améliorer cette réponse en donnant le code Java qui utilise cette regex.

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