如何将字符串转换为字符列表?

Sar*_*ien 11 rust

由于字符串支持迭代但不支持索引,我想将字符串转换为字符列表.我有"abc",我想要['a', 'b', 'c'].

它可以是任何类型,只要我可以索引它.A Vec<char>或者[char; 3]没关系,其他想法也很有意思!

因为我处理很长的字符串,所以会更快.假设字符串是ASCII时效率更高的版本也很酷.

Net*_*ave 16

使用chars方法Stringstr:

fn main() {
    let s = "Hello world!";
    let char_vec: Vec<char> = s.chars().collect();
    for c in char_vec {
        println!("{}", c);
    }
}
Run Code Online (Sandbox Code Playgroud)

这里有一个实例

  • 您也可以在str上调用chars(),而忽略to_string()。 (2认同)

Sar*_*ien 12

我已经找到了这个解决方案:

let chars: Vec<char> = input.chars().collect();
Run Code Online (Sandbox Code Playgroud)

在评论中,有人建议使用.split("")但它似乎以一种令人讨厌的方式实现:

println!("{:?}", "abc".split("").collect::<Vec<&str>>());
Run Code Online (Sandbox Code Playgroud)

["", "a", "b", "c", ""]

  • 如果你想要一个像 `split("")` 这样的 `Vec&lt;&amp;str&gt;` 会给你,但你不想要开头和结尾的空字符串,请使用 `split_terminator("").skip(1)` (3认同)