#8 Rustで学ぶ文字列操作の基本

Rustの文字列操作には、他の言語にはあまり見られない「2種類の文字列」という独自の概念が関わってきます。この記事では、Rustにおける文字列操作の基本と、よく使うメソッドを解説します。

2種類の文字列:StringとStr

Rustには、変更できるStringと、変更できない文字列の一部を指す&strという、2種類の文字列に関する型があります。

let name: String = String::from("太郎");

最初は違いを意識しすぎず、変数として持ち回りたい文字列はStringを使う、と覚えておけば十分です。

文字列を連結する

let greeting = format!("こんにちは、{}さん", name);

format!という機能を使うと、他の言語のf文字列やテンプレートリテラルに近い感覚で、変数を埋め込んだ文字列を作れます。+による連結も可能ですが、所有権のルールが絡んで少し複雑になるため、まずはformat!に慣れるのがおすすめです。

よく使う文字列操作

  • name.len() 文字数(バイト数)を調べる
  • name.to_uppercase() 大文字に変換する
  • name.replace("A", "B") 文字を置き換える
  • name.trim() 前後の余分な空白を取り除く
  • name.split(",") 指定した記号で分割する

文字数を数える際の注意

Goと同じく、Rustのlen()もバイト数を返すため、日本語のような複数バイト文字を含む文字列では、見た目の文字数と一致しません。

let text = "こんにちは";
println!("{}", text.len());           // バイト数(15)
println!("{}", text.chars().count()); // 文字数(5)

日本語を扱う際は、chars().count()を使うことを覚えておきましょう。

Rustならではの注意点

Stringと&strという2種類の存在は、Rust初心者が最初につまずきやすいポイントです。関数の引数などで「型が合いません」というエラーが出たら、Stringと&strのどちらを渡そうとしているかを確認してみましょう。慣れないうちは、エラーメッセージの指示に従って&を付けたり外したりして調整するだけでも解決できることが多いです。

まとめ

Rustの文字列操作はformat!による埋め込みが便利です。Stringと&strという2種類の型があることや、バイト数と文字数の違いを知っておくと、エラーにも落ち着いて対応できます。


本ページはプロモーションを含みます。

参考書籍(PR)

Rustをもっと学びたい方には「実践Rust入門[言語仕様から開発手法まで]」がおすすめです。


PR

コードを書かずに自動化したい方へ

「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。

コメント

このブログの人気の投稿

#25 Rustで学ぶAI API(ChatGPT等)の呼び出し方の基本

#8 C++で学ぶ文字列操作の基本

#16 TypeScriptで学ぶ辞書型(マップ)の基本