こんにちは。たいら(@tairaengineer2)です。
この記事では、C#である文字を指定した回数だけ連続する文字列を作成するやり方について解説します。
スポンサーリンク
- 前提条件
- ある文字を指定した回数だけ連続する文字列を作成するやり方
- やり方その1:for文で追加
- その2:Stringクラスのコンストラクタを使う
- その3:StringBuilder.Insertメソッドを使う
- まとめ:好きなやり方で同じ文字のstringを作ろう
前提条件
この記事では、Visual Studio 2017 Communityを使っています。
インストールの仕方は、下の記事をご参考ください。
ある文字を指定した回数だけ連続する文字列を作成するやり方
この記事で紹介するやり方は3つです。
それは
- for文で追加
- Stringクラスのコンストラクタを使う
- StringBuilder.Insertメソッドを使う
それぞれの結果をコンソールに表示させます。
コンソールプロジェクトを作成するやり方は下の記事をご参考ください。
プログラムを作成したあと、ビルドをするやり方はこちらの記事をご参考ください。
では、1つずつ解説します!
やり方その1:for文で追加
やりかたその1は、for文で追加するやり方です。
次のように書きます。
C#
using System;
namespace ConsoleApp1
{
/// <summary>
/// ある文字を指定した回数だけ
/// 連続する文字列を作成その1
/// </summary>
class Program
{
/// <summary>
/// メイン
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
string forString = "";
for(int i = 0; i < 10; i++)
{
forString += 'a';
}
Console.WriteLine(forString);
}
}
}
実行結果
aaaaaaaaaa
続行するには何かキーを押してください . . .
では、解説します。
解説
このfor文では、10回処理を繰り返します。
文字列を連結するところは、ここです。
for(int i = 0; i < 10; i++)
{
forString += 'a';
}
ここで、10回文字列を連結しています。
その2:Stringクラスのコンストラクタを使う
Stringクラスには、指定した回数だけの文字列を作成するというコンストラクタがあります。
それを使って、文字列を作成します。
C#
using System;
namespace ConsoleApp1
{
/// <summary>
/// ある文字を指定した回数だけ
/// 連続する文字列を作成その2
/// </summary>
class Program
{
/// <summary>
/// メイン
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
string constString = new string('b', 12);
Console.WriteLine(constString);
}
}
}
実行結果
bbbbbbbbbbbb
続行するには何かキーを押してください . . .
では、解説します。
解説
指定した回数だけの文字列を作成するコンストラクタの書き方は下記です。
String(Char, Int32)
String クラスの新しいインスタンスを初期化し、指定した回数だけ繰り返した指定の Unicode 文字が示す値に設定します。
public String (char c, int count);
String Constructor (System) | Microsoft Docsから引用させて頂きました
文字と数字を指定すれば良いだけなので、とても楽です。
このプログラムでコンストラクタを使っているところはここです。
string constString = new string('b', 12);
このコンストラクタを使って、文字列を作成しています。
スポンサーリンク
その3:StringBuilder.Insertメソッドを使う
StringBuilderには、指定された文字を指定された回数だけ文字列を作って挿入するInsertメソッドがあります。
それを使って、文字列を作成します。
C#
using System;
using System.Text;
namespace ConsoleApp1
{
/// <summary>
/// ある文字を指定した回数だけ
/// 連続する文字列を作成その3
/// </summary>
class Program
{
/// <summary>
/// メイン
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
string stringBuilderString =
new StringBuilder().Insert(0, "c", 14).ToString();
Console.WriteLine(stringBuilderString);
}
}
}
実行結果
cccccccccccccc
続行するには何かキーを押してください . . .
では、解説します。
解説
StringBuilder.Insertメソッドの書き方は下記です。
Insert(Int32, String, Int32)
指定した文字列の 1 つ以上のコピーをこのインスタンスの指定した文字位置に挿入します。
public System.Text.StringBuilder Insert (int index, string value, int count);
StringBuilder.Insert Method (System.Text) | Microsoft Docsから引用させて頂きました
Insertメソッドは、指定した位置に文字列を挿入します。
だから、Insertメソッドを使って文字列を作成する場合は1番目の引数を0にする必要があります。
何故ならエラーになるからです。
上のプログラムのInsert部分を
string stringBuilderString =
new StringBuilder().Insert(3, "c", 14).ToString();
って変えて実行してみると
ハンドルされていない例外: System.ArgumentOutOfRangeException: インデックスが範囲
を超えています。負でない値で、コレクションのサイズよりも小さくなければなりません
。
パラメーター名:index
場所 System.Text.StringBuilder.Insert(Int32 index, String value, Int32 count)
場所 ConsoleApp1.Program.Main(String[] args) 場所 C:\Users\○○○○\source\re
pos\ConsoleApp1\ConsoleApp1\Program.cs:行 18
続行するには何かキーを押してください . . .
このようにエラーが出ます。
スポンサーリンク
まとめ:好きなやり方で同じ文字のstringを作ろう
以上がある文字を指定した回数だけ連続する文字列を作成するやり方の解説です。
やり方をもう1回まとめると
- for文で追加
- Stringクラスのコンストラクタを使う
- StringBuilder.Insertメソッドを使う
です!
あなたの好きなやり方で作ってみてください!
あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ
ほかにもC#勉強記事を書いてます。
よければご参考ください。
【C#】コンストラクタからコンストラクタを呼ぶ、コンストラクタ初期化子について解説します
今までブログで書いたC#の解説記事のまとめは、こちらをご参考ください。