C# PR

【C#】0(ゼロ)埋めはPadLeftが爆速だった話

アイキャッチ(c_sharp)
記事内に商品プロモーションを含む場合があります

C#を利用する際、数字を特定の桁数に0埋めするケースはよくあります。
特に初心者の方にとって、この0埋めの方法はいくつか存在し、どれを利用するべきか迷うかもしれません。
この記事では、C#での0埋めの3つの主要な方法を取り上げ、それぞれの実装方法と速度について解説いたします。

この記事でわかること
  • PadLeft(string型)で0埋めする方法
  • ToString(int型)で0埋めする方法
  • string.Format(int型)で0埋めする方法
  • 3つの方法の速度の違い

PadLeft(string型)で0埋めする方法

PadLeftメソッドは、文字列(string型)のインスタンスメソッドとして利用できます。
このメソッドを使用すると、指定した文字数になるように左側から特定の文字で埋めることができます。

基本の使い方

文字列.PadLeft(埋める全体の文字数, 埋める文字);

class Program
{
	static void Main()
	{
		var originalString = "123";
		var paddedString = originalString.PadLeft(5, '0');
		Console.WriteLine(paddedString); // 出力: "00123"
	}
}

“123”という3桁の文字列を5桁になるように0で埋めています。

ToString(int型)で0埋めする方法

ToStringメソッドを使用して、int型の数字を0埋めする方法です。
このメソッドには形式指定子が利用でき、その中の”D”を利用して桁数を指定します。

基本の使い方

数字.ToString("D桁数");

class Program
{
	static void Main()
	{
		var originalNumber = 123;
		var paddedString = originalNumber.ToString("D5");
		Console.WriteLine(paddedString); // 出力: "00123"
	}
}

123という数字を5桁の文字列になるように0で埋めています。

string.Format(int型)で0埋めする方法

string.Formatは、さまざまな型のデータを指定のフォーマットに従って文字列に変換するための方法です。
0埋めをする場合も形式指定子”D”を使用します。

基本の使い方

string.Format("{0:D桁数}", 数字);

class Program
{
	static void Main()
	{
		var originalNumber = 123;
		var paddedString = string.Format("{0:D5}", originalNumber);
		Console.WriteLine(paddedString); // 出力: "00123"
	}
}

123という数字を5桁の文字列に変換しています。

PadLeft、ToString、string.Formatの速度

各0埋めの方法の速度には差が存在します。
実際のアプリケーションでのパフォーマンスを気にする場合、この速度の違いを知っておくと役立ちます。


using System;
using System.Diagnostics;

class Program
{
	static void Main()
	{
		var stopwatch = new Stopwatch();

		var original = "123";
		stopwatch.Start();
		for (var i = 0; i < 100000; i++)
		{
			original.PadLeft(5, '0');
		}
		stopwatch.Stop();
		Console.WriteLine($"PadLeft: {stopwatch.ElapsedMilliseconds} ms");

		stopwatch.Reset();
		var number = 123;
		stopwatch.Start();
		for (var i = 0; i < 100000; i++)
		{
			number.ToString("D5");
		}
		stopwatch.Stop();
		Console.WriteLine($"ToString: {stopwatch.ElapsedMilliseconds} ms");

		stopwatch.Reset();
		stopwatch.Start();
		for (var i = 0; i < 100000; i++)
		{
			string.Format("{0:D5}", number);
		}
		stopwatch.Stop();
		Console.WriteLine($"string.Format: {stopwatch.ElapsedMilliseconds} ms");
	}
}

計測結果として、PadLeftが最も速いことが確認されました。
ですが、毎回の実行でわずかな差しかない場合もありますので、具体的な数値は環境や条件によって異なる点を理解してください。

まとめ

C#での0埋めには、PadLeftToStringstring.Formatの3つの主要な方法が存在します。
それぞれの方法には一長一短がありますが、速度を重視する場合はPadLeftが最も推奨されます。
適切な方法を選択し、プログラミングをより効率的に行いましょう。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です