文字数

String型の文字数の取得は chars().count() を使用します。

[変数].chars().count()

    let s = "abcdeあいうえお";

    let count = s.chars().count();  // 文字数の10になる

バイト数

String型のバイト数を求めるのは以下のようになります。

[変数].len()

    let s = "abcdeあいうえお";

    let len = s.len();  // バイト数の20になる。

指定位置の文字を取り出す

nthを使う方法と、文字列をベクタにしてから取り出す方法があります。 大量に扱う場合、ベクタに変換した方が速くなります。

nth

位置は 0 から s.chars().count() - 1 になります。

s.chars().nth([位置]);

println!("{}", s.chars().nth(0).unwrap());

文字列からベクタ型

String型をベクタ型にする場合、以下のようになります。

let [変数名]: Vec<char> = s.chars().collect();

各文字は以下のように先頭(0)から末尾(vc.len() - 1)まで指定することができます。

    let s = "abcdeあいうえお";

    let vc: Vec<char> = s.chars().collect();
    let mut i = 0;
    while i < vc.len() {
        println!("{}", vc[i]);
        i += 1;
    }

for文で行うこともできます。

    let s = "abcdeあいうえお";

    let vc: Vec<char> = s.chars().collect();
    for c in &vc {
        println!("{}", c);
    }
実行結果は1行に1文字が表示されます。
a
b
...
...
え
お