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

posted @   寻找繁星  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示