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

キャリア形成/給与還元
ひとつひとつ真摯に向き合う企業
ONE_WEDGE社員募集

株式会社 ONE WEDGEでは、新たな仲間を募集しています!

私たちと一緒に、革新的で充実したキャリアを築きませんか?
当社は、従業員が仕事と私生活のバランスを大切にできるよう、充実した福利厚生を整えています。

  • 完全週休2日制(土日休み)で、祝日や夏季休暇、年末年始休暇もしっかり保証!
  • 様々な休暇制度(有給、慶弔、産前・産後、育児、バースデー休暇)を完備!
  • 従業員の成長と健康を支援するための表彰制度、資格取得支援、健康促進手当など!
  • 生活を支えるテレワーク手当、記事寄稿手当、結婚祝金・出産祝金など、様々な手当を提供!
  • 自己啓発としての書籍購入制度や、メンバー間のコミュニケーションを深める交流費補助!
  • 成果に応じた決算賞与や、リファラル採用手当、AI手当など、頑張りをしっかり評価!
  • ワークライフバランスを重視し、副業もOK!

株式会社 ONE WEDGEでは、一人ひとりの従業員が自己実現できる環境を大切にしています。
共に成長し、刺激を与え合える仲間をお待ちしております。
あなたの能力と熱意を、ぜひ当社で発揮してください。
ご応募お待ちしております!

ホームページ、採用情報は下記ボタンからご確認ください!

応募、ご質問など、LINEでお気軽にご相談ください♪

まとめ

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

COMMENT

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