Rust索引String
Rust的String里其实是UTF-8编码的,而UTF-8是变长编码,因此会导致Rust索引String时,可能是索引第k个UTF-8字符(需要遍历字符串),也可能是索引第k个字节。因此,Rust不支持直接用下标来索引String。
如果要找到第k个UTF-8字符:
s.chars().nth(k)
如果要找到第k个字节:
let x: u8 = s.as_bytes()[k];
如果要修改第k个字节,则需要unsafe
,因此这一步可能会导致出现无效的UTF-8字符:
unsafe { s.as_bytes_mut()[len - 1] = b'-'; }
参考:
https://stackoverflow.com/questions/24542115/how-to-index-a-string-in-rust
https://users.rust-lang.org/t/solved-rust-u8-literal-notation/25306
https://doc.rust-lang.org/std/primitive.str.html#method.as_bytes_mut
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程