How to check if a string contains whitespace?

As someone mentioned, if you do not need to deal with Unicode, it will be faster to just explicitly name the characters you care about:

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);
   }
}

You can pass char::is_whitespace to .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 returns true if the character has the Unicode White_Space property.

Alternatively, you can use char::is_ascii_whitespace if you only want to match ASCII whitespace (space, horizontal tab, newline, form feed, or carriage return):

// 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));

Tags:

String

Rust