为什么无法迭代字符串切片?
fn main() {
let text = "abcd";
for (i, c) in text.iter().enumerate() {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
给出一个错误
fn main() {
let text = "abcd";
for (i, c) in text.iter().enumerate() {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
如何使字符串切片可迭代?
kmd*_*eko 20
没有为;.iter()定义方法 str也许是因为它可能含糊不清。即使在您的问题中,也不清楚您到底想要迭代什么,字符还是字节。
.bytes()将产生原始 utf-8 编码字节.chars()将产生chars,它们是 unicode 标量值.graphemes()来自unicode-segmentation为每个“用户感知的字符”生成子字符串的板条箱每个都有很多用例,只需选择最合适的即可。操场
\nuse unicode_segmentation::UnicodeSegmentation; // 1.8.0\n\nfn main() {\n let text = "\xe2\x80\x8d\xe2\x99\x82\xef\xb8\x8f"; // browser rendering may vary\n println!("{}", text.bytes().count()); // 17\n println!("{}", text.chars().count()); // 5\n println!("{}", text.graphemes(true).count()); // 1\n}\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1924 次 |
| 最近记录: |