string - 有没有办法在 Rust 中为字符添加偏移量?
问题描述
我来自 C/C++ 背景,其中 ASCII 字节很容易偏移:
char my_new_char = 'a' + some_offset;
据我了解,Rust 使用 UTF-8 作为其char
/ &str
/ String
,因此并非所有范围都可以使用偏移量。但是,以这种方式偏移对于 ASCII 范围内的字符应该仍然可行,对吗?UTF-8 为重叠范围镜像 ASCII。
我正在查看文档/四处搜索,但找不到抵消的方法。这在 Rust 中可能吗?
解决方案
你可以使用这样的东西:
fn f(c: char, n: i8) -> char {
debug_assert!(c.is_ascii_alphanumeric());
let ret = ((c as i8) + n) as u8 as char;
debug_assert!(ret.is_ascii_alphanumeric());
ret
}
这允许正负偏移,并确保输入和输出都在[a-zA-Z0-9]
范围内(这通常是您在这种情况下想要的)。
推荐阅读
- file - 为什么 32 字节的 ASCII 文本文件在转换为 Unicode 时会变成 66 字节?
- reactjs - Redux 编辑待办事项
- javascript - 如何在反应中获得http参数?
- html - 限制显示的表格行数
- python - 当尝试运行 dag 和 Airflow 返回状态码2
- excel - 按顺序组织具有相同值vba的单元格
- python - Spark (Pyspark) - 作业之间的长时间延迟
- javascript - 为什么当应用程序关闭时 componentWillUnmount 不会在 React 根组件中触发
- java - 在相对布局中自动组织视图 | 安卓工作室
- javascript - Javascript 按文本搜索对象