48 votes

Comment vérifier si une chaîne de caractères contient des espaces ?

Comment vérifier si une chaîne de caractères contient des espaces blancs en Rust ?

Par exemple, ceux-ci devraient tous renvoyer la valeur "true" :

  • "Hello, world!"
  • "Hello\n"
  • "This\tis\ta\ttab"

64voto

Camelid Points 1183

Vous pouvez passer char::is_whitespace a .contains() :

assert!("Hello, world!".contains(char::is_whitespace));
assert!("Hello\n".contains(char::is_whitespace));
assert!("This\tis\ta\ttab".contains(char::is_whitespace));

char::is_whitespace retourne vrai si le caractère possède le code Unicode White_Space propriété.

Vous pouvez également utiliser char::is_ascii_whitespace si vous souhaitez uniquement faire correspondre les espaces ASCII (espace, tabulation horizontale, nouvelle ligne, saut de page ou retour chariot) :

// This has a non-breaking space, which is not ASCII.
let string = "Hello,\u{A0}Rust!\n";

// Thus, it's *not* ASCII whitespace
assert!(!string.contains(char::is_ascii_whitespace));
// but it *is* Unicode whitespace.
assert!(string.contains(char::is_whitespace));

3voto

Steven Penny Points 18523

Comme quelqu'un l'a mentionné, si vous n'avez pas besoin de gérer l'Unicode, ce sera plus rapide de nommer explicitement les caractères qui vous intéressent :

fn main() {
   let a = vec!["false", "true space", "true newline\n", "true\ttab"];
   let a2: &[char] = &[' ', '\n', '\t'];

   for s in a.iter() {
      let b = s.contains(a2);
      println!("{}", b);
   }
}

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