gpt4 book ai didi

rust - 有没有比将其转换为字符串更好的方法来测试字符是否为空白?

转载 作者:行者123 更新时间:2023-11-29 08:22:05 25 4
gpt4 key购买 nike

我有一个检查 char 是否为空白的函数:

fn is_any_whitespace(ch: &char) -> bool {
let re = Regex::new(r"\s").unwrap();
let slice = &ch.to_string()[..];
re.is_match(slice)
}

困扰我的是我将 char 转换为 &str 的部分(&stris_match 接受):

&ch.to_string()[..]

能否更优雅、更高效地完成?

最佳答案

您可以使用 char::is_whitespace 而不是使用正则表达式来解决此问题。 .它应该具有相同的行为并且可能会更有效,具体取决于编译器优化。在任何情况下,不依赖于 regex crate 都是一种收获。

唯一真正的区别是 char::is_whitespace 采用 self 而不是 &self。如果你担心那个,别担心。在 char 上使用 &char 没有任何好处,因为 char 实现了 Copy。事实上,由于 char 是 4 个字节,因此直接传递字符比传递 8 字节指针通常更有效率。这甚至还没有考虑额外的间接层。

如果你坚持使用现有的方法,可以简化为

use regex::Regex;

fn is_any_whitespace(ch: &char) -> bool {
let re = Regex::new(r"\s").unwrap();
re.is_match(&ch.to_string())
}

(playground)

关于rust - 有没有比将其转换为字符串更好的方法来测试字符是否为空白?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58906030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com