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

広告

私の会社で一緒に働きませんか?
私が働く会社では、一緒に働いてくれるエンジニアを募集しています♪

こんな人がオススメ

  • 長く働いていても年収が全然上がらない...一気に年収を上げたい
  • 残業をしたくてしているわけではないので、残業代はしっかりと出して欲しい
  • やりたいことに挑戦させてもらえない...自分がしてみたいことに挑戦したい
  • 通勤時間が長すぎるから、できるだけ短くしたい
  • もっと勉強したいから、書籍代や資格の受験料など負担してくれるところに入りたい
  • 現場に駆り出されてからは放置プレイ...相談できる人も先輩も居ないので、自分の状況をちゃんと理解してくれるところで働きたい

上記内容に1つでも当てはまる場合は、ぜひお声がけください。 私のサイトから応募していただいた方にはお好きなギフト券5000円分プレゼントさせていただきます(条件あり)。

詳細ページ

まとめ

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

COMMENT

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