Rust の文字列
1. 文字列 (Strings)
文字列はテキストデータを格納するために使用されます。
これまでに、&str型を使用して文字列を作成する方法を学習しました。
サンプルコード
let greeting: &str = "こんにちは";
println!("{}", greeting);文字列はダブルクォート(" ")で囲まれる点に注意してください。
Rustには、主に2つの文字列型が存在します。
- &str: 「ストリングスライス(string slices)」と呼ばれます。"Hello"のような固定テキスト(文字列リテラル)に使用されます。
- String: 変更(更新)が必要な文字列を扱う場合に使用されます。
このチャプターでは、より柔軟で動的な操作が可能な String 型を中心に解説します。
2. Stringの作成
文字列リテラルから String を作成するには、to_string() メソッドまたは String::from() 関数を使用します。
サンプルコード
// to_string()を使用する場合
let text1 = "Hello World".to_string();サンプルコード
// String::from()を使用する場合
let text2 = String::from("Hello World");Rustではどちらの書き方も非常に一般的であり、どちらを選択するかは開発者の好みに委ねられます。
3. Stringの変更
String は「ミュータブル(変更可能)」なデータ型です。mut キーワードを付けて宣言することで、内容を変更できます。
push_str() を使用すると、文字列にテキストを追加できます。
サンプルコード
let mut greeting = String::from("Hello");
greeting.push_str(" World");
println!("{}", greeting); // 出力: Hello Worldpush() を使用すると、文字(char型)を1つ追加できます。
サンプルコード
let mut word = String::from("Hi");
word.push('!');
println!("{}", word); // 出力: Hi!4. 文字列の連結 (Concatenate)
複数の文字列を結合するには、format! マクロを使用するのが最も便利です。
サンプルコード
let s1 = String::from("Hello");
let s2 = String::from("World!");
let s3 = String::from("なんて素晴らしい日だ!");
let result = format!("{} {} {}", s1, s2, s3);
println!("{}", result);また、+ 演算子を使用して文字列を結合することもできますが、多くの値を扱う場合はコードが複雑になりがちです。
サンプルコード
let s1 = String::from("Hello");
let s2 = String::from("World!");
let s3 = String::from("なんて素晴らしい日だ!");
let result = s1 + " " + &s2 + " " + &s3;
println!("{}", result);注記: + 演算子を使用する場合、String に追加できるのは &str のみです。そのため、ここでは &s2 や &s3 (ストリングスライスへの参照)を使用しています。
Tips: 文字列を連結する場合、一般的には + よりも format! マクロを使用する方が推奨されます。
5. 文字列の長さ (Length)
.len() メソッドを使用することで、文字列の長さを取得できます。
サンプルコード
let name = String::from("John");
println!("長さ: {}", name.len()); // 出力: 4