C# PR

C#の初心者が覚えるべき6つの文字列結合

C#の初心者が覚えるべき6つの文字列結合
記事内に商品プロモーションを含む場合があります
ひなドリ

C#の文字列結合ってどうしたらいいの?

わかドリ

一番簡単なのは”+”で文字列結合することだけど、他にも方法があるから学んでいこう。

C#での文字列結合ってどうしたらいいかわからないですよね。

わかドリも「あれ、どうやるんだっけ?」と思うこともよくあります。

でも大丈夫。

意外と6個しかありませんし、とりあえず2個だけ覚えればなんとかなっちゃいます。

そこで今回はC#の文字列結合について学んでいきましょう。

この記事でわかること
  • 文字列結合の6つの方法
  • ケースで使い分ける文字列結合

「+」演算子を使う【一番簡単】

例えば、以下のように+演算子を使って文字列を連結することができます

string name = "World";
string message = "Hello " + name + "!"; 
// 出力結果は → "Hello World!"

2つの文字列だけでなく、いくつかの文字列を結合することもできます。

string str1 = "Hello";
string str2 = "World";
string str3 = "!";
string message = str1 + " " + str2 + str3; 
// 出力結果は → "Hello World!"

上記の例では、+演算子を使って3つの文字列を連結しています。

ただし、文字列を連結する場合、+演算子は文字列の数が増えるにつれて効率が低下することがあります。

そのため、文字列の連結が頻繁に行われる場合は、StringBuilderクラスを使用することが推奨されます。

わかドリ

一番簡単な方法!初めてはとりあえずこれでやってみよう!でも、大きな文字列を結合する時はStringBuilderを使おうね。

StringBuilderを使う【大きい文字列に】

StringBuilderクラスを使用すると、文字列を連結する際に新しい文字列を作成することなく、既存の文字列に追加することができます。

このため、StringBuilderクラスは、文字列の連結が頻繁に行われる場合に特に有用です。

例えば、以下のようにStringBuilderクラスを使用して、文字列を連結することができます。

StringBuilder sb = new StringBuilder();
sb.Append("Hello");
sb.Append(" ");
sb.Append("World");
sb.Append("!");
string message = sb.ToString(); 
// 出力結果は → "Hello World!"

上記の例では、StringBuilderクラスを使用して、3つの文字列を連結しています。

StringBuilderクラスは、Appendメソッドを使用して、既存の文字列に新しい文字列を追加していくことができます。

最後に、ToStringメソッドを呼び出して、StringBuilderオブジェクトに含まれる文字列を取得しています。

わかドリ

大きな文字列に結合していく時に使うよ。長いSQLを作るときや、メールなどの長いテキストを作るときなんかに使うことが多いよ。

$””を使う【短め文字列に】

$””(ダラー記号と二重引用符)で囲んだ中に、変数や式を埋め込むことができます。

例えば、以下のように文字列補間を使って、変数を埋め込むことができます。

string name = "Alice";
int age = 25;
string message = $"My name is {name} and I am {age} years old.";
// "My name is Alice and I am 25 years old."

上記の例では、$””で囲まれた中に、中括弧{}で囲まれた変数名を書くことで、変数を埋め込んでいます。

今回の例では、「Alice」が{ name }に「25」が{ age }に埋め込まれました。

わかドリ

中かっこ{}を忘れるとただの文字列として認識されちゃうから、そこは注意してね。

また、式を埋め込むこともできます。例えば、以下のように式を埋め込むことができます。

int a = 5;
int b = 3;
string message = $"{a} + {b} = {a + b}";
// "5 + 3 = 8"

上記の例では、式{a + b}を埋め込んで、文字列を生成しています。

文字列補間を使うと、文字列の中に変数や式を埋め込む際に、+演算子やstring.Formatメソッドを使わずに済み、コードが読みやすくなるというメリットがあります。

また、文字列補間を使うと、文字列内での式の評価結果をそのまま埋め込むことができるため、コードの短縮化にも役立ちます。

わかドリ

最近、わかドリはこれを使うことが多いです。コードが読みやすくなります。

これはC# 6.0以降の機能であるため、古いC#では使用できません。

ただ、現在サポートされているC#は最低でも7.3であるため、使えないことは少ないでしょう。

string.Concatを使う

string.Concatメソッドを使用すると、+演算子を使う場合と同様に、複数の文字列を連結することができます。

例えば、

string str1 = "Hello";
string str2 = "World";
string str3 = "!";
string message = string.Concat(str1, " ", str2, str3); 
// 出力結果は → "Hello World!"

上記の例では、string.Concatメソッドを使って3つの文字列を連結し、str1とstr2の間にはスペースが挿入されています。

string.Concatメソッドは、+演算子と同様に文字列を連結する方法の1つであり、複数の文字列を連結するために使用できます。

なお、string.Concatには配列を渡すこともできます。

string[] strs = {"Hello"," ","World","!");
string message = string.Concat(strs); 
// 出力結果は → "Hello World!"

わかドリ

string.Concatは、配列の中身を区切り文字なしでぐちゃっと結合する時に使うよ

string.Joinを使う

string.Joinメソッドは、配列やコレクションなどの複数の文字列を区切り文字を使って連結するために使用されます。

string.Joinメソッドを使用することで、+演算子やstring.Concatメソッドよりも簡単に文字列を連結することができます。

string[] words = { "Hello", "World", "!" };
string message = string.Join(" ", words); 
// 出力結果は → "Hello World !"

上記の例では、string.Joinメソッドを使って、words配列の要素をスペースで区切って連結しています。

また、string.Joinメソッドは、可変長引数を受け取るため、複数の配列を連結することもできます。例えば、

string[] words1 = { "Hello", "World" };
string[] words2 = { "Goodbye", "World" };
string message = string.Join(", ", words1, words2); 
// 出力結果は → "Hello, World, Goodbye, World"

上記の例では、string.Joinメソッドを使って、words1配列とwords2配列をコンマで区切って連結しています。

string.Joinメソッドは、文字列を連結する場合に非常に便利なメソッドであり、配列やコレクションを連結する際には特に有用です。

わかドリ

string.Concatは、配列の中身を区切り文字付で結合する時に使うよ

string.Formatを使う

string.Formatメソッドは、文字列内にプレースホルダーを埋め込み、そのプレースホルダーに対応する値を置き換えた文字列を生成するために使用されます。

わかドリ

ちなみにプレースホルダーはこういうやつ → {0}

string.Formatメソッドを使用することで、文字列を連結する際に文字列内に直接変数を埋め込む必要がなくなり、可読性が向上します。

string name = "Alice";
int age = 25;
string message = string.Format("My name is {0} and I am {1} years old.", name, age);
// "My name is Alice and I am 25 years old."

上記の例では、string.Formatメソッドを使用して、文字列内にプレースホルダー{0}と{1}を埋め込み、それらのプレースホルダーに対応する値で置き換えた文字列を生成しています。

わかドリ

一昔前はよく見たけど、最近は$””にすることが多いかも。でも、よく見る構文だから覚えておこうね。

ケースで考える文字列結合

結合する文字が多い場合はStringBuilder

操作する文字が大きい場合、必ずStringBuilderを使いましょう。

簡単に言うと文字列操作に効率的な機能が備わっており、メモリ管理が優れているのと処理速度が速いためです。

ひなドリ

ちなみに大きいの判断基準ある?

わかドリ

うーん、難しいけど100文字以上の文字列を扱うとか、ループの中で文字列を結合するとかの時はStringBuilderかな。

一部を結合・補完する場合は$””

文字列結合において、簡単な文字列結合や保管であれば「$””」を使うといいでしょう。

クラスの呼び出しなども不要で、読みやすさも高いためです。

ちなみにわかドリの現場ではURLを生成したりするときに使ったりします。

例はこちら。

string baseurl = "http://wakadri/api";
string url = $"{baseurl}/create";

これを使う利点として、「ここが可変」ということが直感的にわかるためです。

何かに少しだけ足したいという時に使うといいでしょう。

わかドリ

わかりやすいし読みやすいので、ちょっとの文字列結合ならこれ使っちゃいます。

配列を操作するならstring.Joinかstring.Concat

配列を操作する場合はstring.Joinかstring.Concatを使いましょう。

ループで回して結合でも問題ありませんが、この方がソースコードがスッキリします。

わかドリ

配列内の文字列を結合することは少ないけど、覚えておくとコードが読みやすくなるよ。

このページではこれだけ覚える!

文字列結合の方法は6つ!

わかドリ

6つあるけど、一番簡単なのは「+」を使うこと

ひなドリ

よし、わかった

大きい文字列はStringBuilder、他では$””がオススメ

わかドリ

大きくなりそうだったら、とりあえずStringBuilder

ひなドリ

よし、わかった

今回のゼロわか

この記事でわかったこと
  • 文字列結合の6つの方法
  • ケースで使い分ける文字列結合

お疲れさまでした。

今回は、C#の文字列結合の方法についてお伝えしました。

わかドリ

難しく見えるかもだけど、書いてみると意外と簡単かも。今日も学んだあなたが偉い!

ABOUT ME
わかドリ
現役SE。 プログラミング未経験で ブラック企業に入社したが、 何とか転職したりして10年生き残った。 プログラミング未経験だった かつての自分であるひなドリを救うため、 プログラミングのブログを運営。