如何检查字符串在Rust中是否包含空格?
例如,这些都应返回true:
"Hello, world!"
"Hello\n"
"This\tis\ta\ttab"
答案 0 :(得分:56)
您可以将char::is_whitespace
传递给.contains()
:
assert!("Hello, world!".contains(char::is_whitespace));
assert!("Hello\n".contains(char::is_whitespace));
assert!("This\tis\ta\ttab".contains(char::is_whitespace));
如果字符具有Unicode char::is_whitespace
属性,则 White_Space
返回true。
或者,如果您只想匹配ASCII空格(空格,水平制表符,换行符,换页符或回车符),则可以使用char::is_ascii_whitespace
:
// 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));
答案 1 :(得分:3)
就像有人提到的那样,如果您不需要处理Unicode,它将更快 只是明确命名您关心的字符:
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);
}
}