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