C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#で文字や文字列を指定した回数だけ繰り返す3つの方法


C#では、特定の文字や文字列を指定した回数だけ繰り返した新しい文字列を作成したい場面がよくあります。本記事では、代表的な3つの実装方法をサンプルコードと出力結果とともに解説します。

  • stringコンストラクタnew string(charToRepeat, 5))で文字「!」を5回繰り返す
  • string.Concat(Enumerable.Repeat(...)) で文字を指定回数繰り返す
  • StringBuilder を使ってループで文字列を連結する

1. stringコンストラクタを使用する方法

string クラスには、同じ文字を指定回数繰り返した文字列を生成できるコンストラクタが用意されています。単一の文字を繰り返す場合に最もシンプルで効率的な方法です。

サンプルコード

using System;
namespace DemoApplication{
    public class Program{
        static void Main(string[] args){
            string myString = "Hi";
            Console.WriteLine($"String: {myString}");
            char charToRepeat = '!';
            Console.WriteLine($"Character to repeat: {charToRepeat}");
            string repeatedString = new string(charToRepeat, 5);
            Console.WriteLine($"Repeated String: {myString}{repeatedString}");
            Console.ReadLine();
        }
    }
}

出力結果

String: Hi
Character to repeat: !
Repeated String: Hi!!!!!

上記の例では、new string(charToRepeat, 5) の第1引数に繰り返したい文字「!」、第2引数に繰り返し回数「5」を指定することで、「!!!!!」という文字列を生成しています。元の文字列「Hi」と結合すると「Hi!!!!!」になります。

2. string.ConcatとEnumerable.Repeatを使用する方法

LINQの Enumerable.Repeat メソッドで同じ値を指定回数分生成し、string.Concat で連結する方法です。この方法は複数文字からなる文字列を繰り返したい場合にも対応できるのが利点です。

サンプルコード

using System;
using System.Linq;
namespace DemoApplication{
    public class Program{
        static void Main(string[] args){
            string myString = "Hi";
            Console.WriteLine($"String: {myString}");
            char charToRepeat = '!';
            Console.WriteLine($"Character to repeat: {charToRepeat}");
            var repeatedString = string.Concat(Enumerable.Repeat(charToRepeat, 5));
            Console.WriteLine($"Repeated String: {myString}{repeatedString}");
            Console.ReadLine();
        }
    }
}

出力結果

String: Hi
Character to repeat: !
Repeated String: Hi!!!!!

上記の例では、string.Concat(Enumerable.Repeat(charToRepeat, 5)) によって、文字「!」を5回繰り返した文字列を生成しています。using System.Linq; の追加が必要になる点に注意してください。

3. StringBuilderを使用する方法

StringBuilder を使えば、forループで文字列を繰り返し追加(Append)できます。あらかじめ必要な容量を見積もっておくことで、不要なメモリ再割り当てを防ぎ、パフォーマンスを向上させられます。繰り返す内容が動的に変わる場合にも柔軟に対応できます。

サンプルコード

using System;
using System.Text;
namespace DemoApplication{
    public class Program{
        static void Main(string[] args){
            string myString = "Hi";
            Console.WriteLine($"String: {myString}");
            string stringToRepeat = "!";
            Console.WriteLine($"String to repeat: {stringToRepeat}");
            StringBuilder builder = new StringBuilder(stringToRepeat.Length * 5);
            for (int i = 0; i < 5; i++){
                builder.Append(stringToRepeat);
            }
            string repeatedString = builder.ToString();
            Console.WriteLine($"Repeated String: {myString}{repeatedString}");
            Console.ReadLine();
        }
    }
}

出力結果

String: Hi
Character to repeat: !
Repeated String: Hi!!!!!

上記の例では、まず繰り返す文字列の長さに繰り返し回数を掛けた値で StringBuilder の初期容量を確保し、その後forループ内で文字列「!」を5回追加しています。最後に ToString() を呼び出して結果の文字列を取得します。

まとめ:使い分けのポイント

  • new string(char, count):単一の文字を繰り返すだけなら、最も高速でシンプルなこの方法がおすすめです。
  • string.Concat(Enumerable.Repeat()):「AB」といった複数文字の文字列ごと繰り返したい場合に有効です。
  • StringBuilder:大量の連結処理や、条件に応じて内容を組み立てるような動的なケースに向いています。

用途に応じて最適な方法を選択することで、可読性とパフォーマンスの両方を保ったコードを書けます。

  1. AndroidのSQLiteで文字列型の数値を正しく並べ替える方法【CAST関数活用】

    Androidアプリ開発では、SQLiteが標準で組み込まれたデータベースとして広く使われています。SQLiteはオープンソースのSQLデータベースで、データを端末内のテキストファイルに保存します。リレーショナルデータベースの主要な機能をすべて備えており、JDBCやODBCのような接続設定を行うことなく、すぐにデータベースへアクセスできるのが大きな特徴です。 文字列型の数値カラムをソートする際の課題 SQLiteでは、給与などの数値をTEXT型(文字列)カラムに保存していると、単純なORDER BY句では「辞書順」でソートされてしまいます。そのため「10」が「9」より先に表示されるなど、期待

  2. Pythonで数値を逆順にする2つの方法【文字列変換と数学的処理】

    整数の桁を逆順に並べ替える(数値の反転)処理は、Pythonでは比較的簡単に実装できます。アルゴリズムの学習やコーディングテストなど、さまざまな場面で数値を反転させる必要に迫られることがあります。入力:12345 出力:54321Pythonで数値を逆順にする方法は、主に以下の2つがあります。数値を文字列に変換し、文字列を反転させてから再び整数に戻す方法文字列に変換せず、数学的な演算だけで反転させる方法方法1:文字列に変換して反転するこの方法は最もシンプルで、複雑なロジックを考える必要がありません。数値をstr()で文字列に変換し、スライス記法[::-1]を使って文字列を反転させた後、int(