如何判断字符串中是否包含空格?

例如,这些都应该返回true:

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

推荐答案

你可以通过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 White_Space属性,则char::is_whitespace返回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));

Rust相关问答推荐

如何找到一个数字在二维数组中的位置(S)?

trait声明中的生命周期参数

Rust TcpStream不能在读取后写入,但可以在不读取的情况下写入.为什么?

具有对同一类型的另一个实例的可变引用的

在本例中,为什么我不能一次多次borrow 可变变量?

定义只有一些字段可以缺省的 struct

不能在Rust中使用OpenGL绘制三角形

Rust移动/复制涉及实际复制时进行检测

Rust中的位移操作对范围有什么影响?

有什么方法可以通过使用生命周期来减轻嵌套生成器中的当生成器产生时borrow 可能仍在使用错误?

std::vector::shrink_to_fit 如何在 Rust 中工作?

产生拥有值的迭代器的 Rust 可变borrow 在循环中失败

如何获得对数组子集的工作可变引用?

当我不满足特征界限时会发生什么?

在 RefCell 上borrow

字符串切片的向量超出范围但原始字符串仍然存在,为什么判断器说有错误?

使用 `.` 将 T 转换为 &mut T?

如何将 u8 切片复制到 u32 切片中?

如何在宏中的多个参数上编写嵌套循环?

为什么 Bevy 的 Trait 边界不满足 Rapier 物理插件?