我正在寻找最简单的方法来确定Rust中的字符是否在两个Unicode值之间。
例如,我想知道某个字符s
是否在[#x1-#x8]
或[#x10FFFE-#x10FFFF]
之间。有没有这样做的功能?
答案 0 :(得分:6)
最简单的方法,假设它们不是Unicode类别(在这种情况下你应该使用std::unicode
)是使用常规比较运算符:
(s >= '\x01' && s <= '\x08') || s == '\U0010FFFE' || s == '\U0010FFFF'
(如果你不知道这些东西的字面形式,可以得到8位十六进制文字\xXX
,16位十六进制文字\uXXXX
和32位十六进制文字{ {1}}。事实上,演员阵容也可以正常工作,例如\UXXXXXXXX
,并且效率也会提高;只是不太容易阅读。)
答案 1 :(得分:4)
我匹配角色的最简单方法是
fn match_char(data: &char) -> bool {
match *data {
'\x01'...'\x08' |
'\u{10FFFE}'...'\u{10FFFF}' => true,
_ => false,
}
}
与一堆if
语句相比,匹配字符的模式对我来说是最简单的方法。它可能不是最高效的解决方案,但它对我很有帮助。