检查字符串是否包含空格

时间:2020-10-14 20:28:28

标签: string rust

如何检查字符串在Rust中是否包含空格?

例如,这些都应返回true:

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

2 个答案:

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