Rust 文字列をベクタ(可変の配列)に変換する

Rust 文字列をベクタ(可変の配列)に変換する

Rustで、文字列をベクタ(可変の配列)に変換するサンプルコードを記述してます。「char_indices().collect::<Vec<_>>()」を使用します。Rustのバージョンは1.62.1を使用してます。

環境

  • OS windows11 home
  • rustc 1.62.1

文字列をベクタ(可変の配列)に変換

文字列をベクタ(可変の配列)に変換するには「char_indices().collect::<Vec<_>>()」を使用します。

"文字列".char_indices().collect::<Vec<_>>();

実際に使用してみます。

fn main() {

    let mut str: String = "mebee".to_string();

    println!( "{:?}", str.char_indices().collect::<Vec<_>>() );

    str = "あいうえお".to_string();
    // [(0, 'm'), (1, 'e'), (2, 'b'), (3, 'e'), (4, 'e')]

    println!( "{:?}", str.char_indices().collect::<Vec<_>>() );
    // [(0, 'あ'), (3, 'い'), (6, 'う'), (9, 'え'), (12, 'お')]

    str = "     ".to_string();

    println!( "{:?}", str.char_indices().collect::<Vec<_>>() );
    // [(0, ' '), (1, ' '), (2, ' '), (3, ' '), (4, ' ')]

}

実行結果を見ると、変換されていることが確認できます。
※インデックス番号は、連番ではなくバイト数のようです。

サロゲートペア

サロゲートペア文字のような通常の2バイトで1文字で表すところを、4バイトで1文字となるものでも、変換されます。

fn main() {

    let str: String = "😵😶😷".to_string();

    println!( "{:?}", str.char_indices().collect::<Vec<_>>() );

}

実行結果