Reputation: 1575
How do I check if a string contains any whitespace in Rust?
For example, these should all return true:
"Hello, world!"
"Hello\n"
"This\tis\ta\ttab"
Upvotes: 49
Views: 11899
Reputation: 1
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);
}
}
Upvotes: 3
Reputation: 1575
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));
Upvotes: 64