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"
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"
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));
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 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.