[解決済み] 文字列を連結する方法を教えてください。
質問事項
次のような型の組み合わせを連結するにはどうしたらよいですか。
-
str
とstr
-
String
そしてstr
-
String
そしてString
解決方法は?
文字列を連結する場合、その結果を格納するためにメモリを確保する必要があります。最も簡単に始められるのは
String
と
&str
:
fn main() {
let mut owned_string: String = "hello ".to_owned();
let borrowed_string: &str = "world";
owned_string.push_str(borrowed_string);
println!("{}", owned_string);
}
ここでは、所有する文字列を変異させることができます。これは、潜在的にメモリ割り当てを再利用することができるので、効率的です。似たようなケースとして
String
と
String
というように
&String
は、次のように参照されます。
&str
.
fn main() {
let mut owned_string: String = "hello ".to_owned();
let another_owned_string: String = "world".to_owned();
owned_string.push_str(&another_owned_string);
println!("{}", owned_string);
}
この後
another_owned_string
は変更されません。
mut
という修飾語を使用します。) もう一つのバリエーションとして
を消費します。
その
String
が、ミュータブルである必要はありません。これは
の実装です。
Add
特性
を受け取ることができます。
String
を左辺とし
&str
を右辺とする。
fn main() {
let owned_string: String = "hello ".to_owned();
let borrowed_string: &str = "world";
let new_owned_string = owned_string + borrowed_string;
println!("{}", new_owned_string);
}
なお
owned_string
を呼び出した後は、もうアクセスできなくなります。
+
.
もし、両方をそのままにして、新しい文字列を作り出したいとしたらどうでしょうか?最も簡単な方法は
format!
:
fn main() {
let borrowed_string: &str = "hello ";
let another_borrowed_string: &str = "world";
let together = format!("{}{}", borrowed_string, another_borrowed_string);
// After https://rust-lang.github.io/rfcs/2795-format-args-implicit-identifiers.html
// let together = format!("{borrowed_string}{another_borrowed_string}");
println!("{}", together);
}
どちらの入力変数もimmutableなので、触れられていないことがわかる。もし、同じことを
String
という事実を利用することができます。
String
も書式設定できる。
fn main() {
let owned_string: String = "hello ".to_owned();
let another_owned_string: String = "world".to_owned();
let together = format!("{}{}", owned_string, another_owned_string);
// After https://rust-lang.github.io/rfcs/2795-format-args-implicit-identifiers.html
// let together = format!("{owned_string}{another_owned_string}");
println!("{}", together);
}
あなたは
持つ
を使用します。
format!
が、しかし。あなたは
1つの文字列をクローンする
で、もう一方の文字列を新しい文字列に追加します。
fn main() {
let owned_string: String = "hello ".to_owned();
let borrowed_string: &str = "world";
let together = owned_string.clone() + borrowed_string;
println!("{}", together);
}
備考 - 私が行った型指定はすべて冗長です。コンパイラはここで使われているすべての型を推論することができます。この質問は、Rustを初めて使う人たちに人気があると思うので、分かりやすくするために追加しました。
関連
-
[解決済み] デリミタによる文字列の分割
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] Bashで文字列変数を連結する方法
-
[解決済み] Bashで文字列が部分文字列を含むかどうかをチェックする方法
-
[解決済み] JavaScriptで複数行の文字列を作成する
-
[解決済み] goで文字列の連結を効率的に行う方法
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Scalaにおけるより良い文字列フォーマット
-
[解決済み] Tclスクリプトで文字列の特定の文字を置き換えるには?
-
[解決済み] ある文字列が他の文字列を含んでいるかどうかをチェックする
-
[解決済み] golangの[]stringと...stringの違いは何ですか?
-
[解決済み] PowerShell 4.0を使用して変数入力からスペースを削除する
-
[解決済み] Luaでstring.gmatch()を使って文字列を分割する
-
[解決済み] 文字列を追加して印刷するにはどうすればよいですか?
-
[解決済み】Bashで文字を別の文字に置き換える。
-
[解決済み】文字列を一定の長さまで繰り返す
-
[解決済み] 複数行の文字列をカンマで区切られた1つの文字列に変換する