[C#] 文字列の結合方法まとめ [Join/StringBuilder/文字列補完/他]

C#

この記事では、C#での文字列の結合(連結)方法を解説します。

 

文字列、結合したいですか?

犬

まあ、はい

これから紹介するテクニックを使えば、文字列結合の基本をマスターできます。
サンプルコードとともにわかりやすく解説していますので、ぜひ参考にしてください!

 

概要

結合方法一覧

まず、C#で文字列を結合する方法を簡単にまとめましたので確認していきましょう。

方法特徴
+演算子シンプル。短い文字列の結合向け
String.Concat()メソッド+演算子より明示的。短い文字列の結合向け
StringBuilderクラスメモリ効率、パフォーマンスに優れる。大量の文字列の結合向け
文字列補完簡潔で可読性が高い
String.Join()メソッド配列の結合。区切り文字を指定できる。

 

それぞれメリットデメリットがありますが、基本的には文字列補完がおすすめで、ループ等で大量の文字列を結合する場合はStringBuilderを使うのが良いとされています。

次項では、それぞれの方法をサンプルとともに解説していきます。

 

サンプル&詳細解説

+演算子による結合

まずは+演算子を使った結合のサンプルです。

サンプルコード

using System;

namespace SampleCode
{
    class SampleCode
    {
        static void Main()
        {
            string str1 = "Cat";
            string str2 = "Dog";

            // 文字列を結合
            string strPlus = str1 + str2;

            // 出力
            Console.WriteLine(strPlus);
            Console.ReadKey();
        }
    }
}

実行結果

CatDog

「Cat」と「Dog」が結合されて、「CatDog」になりました。

+演算子による結合はシンプルでわかりやすい書き方です。

  

String.Concatメソッドによる結合

String.Concatメソッドを使っても、文字列の結合は行えます。

サンプルコード

using System;

namespace SampleCode
{
    class SampleCode
    {
        static void Main()
        {
            string str1 = "Cat";
            string str2 = "Dog";

            // 文字列を結合
            string concatenated = String.Concat(str1, str2);

            // 出力
            Console.WriteLine(concatenated);
            Console.ReadKey();
        }
    }
}

実効結果

CatDog

+演算子を使った場合と同じ結果を得られました。

Concatメソッドは引数を可変数で指定できますので、複数文字列の結合も効率的に行えます。

 

StringBuilderによる文字列結合

StringBuilderクラスを使った文字列の結合は、以下の通りです。

サンプルコード

using System;
using System.Text;

namespace SampleCode
{
    class SampleCode
    {
        static void Main()
        {
            string str1 = "Cat";
            string str2 = "Dog";
            StringBuilder sb = new StringBuilder();
            
            //文字列を結合
            sb.Append(str1);
            sb.Append(str2);

            // 出力
            Console.WriteLine(sb.ToString());
            Console.ReadKey();
        }
    }
}

実効結果

CatDog

+演算子を使った場合と同じ結果を得られました。

StringBuilderは他の結合方法と比べてパフォーマンス面で優れています
サンプルのような短い結合だと若干冗長になってしまいますが、大量の文字列を扱う場合などは特におすすめの方法となります。

 

文字列補完による文字列結合

比較的新しい方法として、文字列補完を使った結合方法というのもあります。

文字列補完は、「$””」で表現します。「$(ドル記号)」を先頭に書き、そのあとの「“”(ダブルクォーテーション)」間に文字列を記述します。
変数を使う場合は、「{}(波括弧)」で囲みます。

似た方法として、String.Formatを使った文字列結合方法もありますが、文字列補完のほうが簡潔で可読性が高いため、こちらを使ったほうがよいでしょう。

サンプルコード

using System;

namespace SampleCode
{
    class SampleCode
    {
        static void Main()
        {
            string str1 = "Cat";
            string str2 = "Dog";

            // 文字列を結合して出力
            Console.WriteLine($"{str1}{str2}");
            Console.ReadKey();
        }
    }
}

実行結果

CatDog

文字列補完でも、同様に文字列が結合できました。

 

StringBuilderと文字列補完の組み合わせ

大量の文字列を結合するときは、文字列補完とStringBuilderを組み合わせるとより簡潔に書けます。

サンプルコード

using System;
using System.Text;

namespace SampleCode
{
    class SampleCode
    {
        static void Main()
        {
            string str1 = "Cat";
            string str2 = "Dog";

            StringBuilder sb = new StringBuilder();

            //文字列を結合
            sb.Append($"{str1}{str2}");

            // 出力
            Console.WriteLine(sb.ToString());
            Console.ReadKey();
        }
    }
}

実効結果

CatDog

ループ処理で文字列を結合する場合は、この方法を使うと簡潔かつパフォーマンスに優れた処理にできます。

 

String.Joinメソッドによる文字列配列の結合

ここまでで紹介した方法とは少し違って、今度は文字列の配列を結合する方法を紹介します。

文字列配列の結合には、String.Joinメソッドを使います。
Joinメソッドは引数で区切り文字を指定できるので、CSV(カンマ区切り)ファイルなどの特定の区切り文字を持つデータを作るときに便利です。

サンプルコード

using System;

namespace SampleCode
{
    class SampleCode
    {
        static void Main()
        {
            string[] strs = new string[] { "Cat","Dog" };

            // 文字列の結合(カンマ区切り)
            string joined = String.Join(",", strs);

            // 出力
            Console.WriteLine(joined);
            Console.ReadKey();
        }
    }
}

実行結果

Cat,Dog

配列の要素がカンマ区切りで結合されました。

サンプルではカンマを指定していますが、空文字を指定すれば区切りのない結合データを作ることもできます。もちろん、カンマ以外の区切り文字(文字列)も指定できます。

 

まとめ

以下は当記事のまとめです!

  • 文字列の結合方法は、+演算子、Concatメソッド、StringBuilderクラス、文字列補完、Joinメソッドの5つが挙げられる。
  • 文字列補完による結合が簡潔で可読性が高いのでおすすめ。
  • 大量の文字列を結合する場合は、パフォーマンス面でStringBuilderが向いている。文字列補完と組み合わせてもよい。

紹介した通り、文字列の結合方法には様々な方法がありますので、状況に応じて適切な方法を選んでいきましょう!特に、ループ等で大量の処理を行う場合はパフォーマンスに影響しますので注意が必要です!

コメント

タイトルとURLをコピーしました