C# String Format完全ガイド|0埋め・日付書式・16進数表示・桁数指定の方法を解説のカバー画像

C# String Format完全ガイド|0埋め・日付書式・16進数表示・桁数指定の方法を解説

公開日:2025/06/03最終更新日:2025/06/03

C#でプログラミングしていると文字列の書式設定をしたいことがよくあります。文字列の書式設定は、ログ出力、UI表示、データ処理など、さまざまな場面で使用されます。


C#では、String.Formatメソッドを使用することで、数値の0埋め、日付の書式設定、16進数表示、桁数指定など、さまざまな書式設定を簡単に実装できます。この記事では、String.Formatメソッドの基本的な使い方から実務で頻繁に使用される応用テクニックまで、初心者エンジニアにも分かりやすく解説します。

1.C# String Formatの基本概念と使い方

String.Formatメソッドは、.NET Frameworkに標準で用意されている静的メソッドです。このメソッドを使用することで、文字列内に変数や数値を埋め込み、指定した書式で表示できます。


この章では、C#のString.Formatメソッドの基本概念と使い方を紹介します。

String.Formatメソッドの基本構文

String.Formatメソッドは、指定した書式でオブジェクトの値を文字列に変換して、別の文字列に挿入するメソッドです。


基本的な構文は以下のとおりです。

string result = string.Format(書式文字列, 引数0, 引数1, ...);

書式文字列内では、プレースホルダーと呼ばれる {インデックス} の形式で置換位置を指定します。インデックスは0から開始される連番となります。


プレースホルダーの使用例は以下のとおりです。

string name = "田中";

int age = 30;

string result = String.Format("私の名前は{0}で、年齢は{1}歳です。", name, age);

Console.WriteLine(result);

// 出力: 私の名前は田中で、年齢は30歳です。

C# 文字列補間式との違いと使い分け

C# 6.0で導入された文字列補間は、String.Formatメソッドより簡潔に文字列の書式設定が可能です。文字列補間式は、文字列の前に「$」記号を付けて使用します。


文字列補間式とString.Formatメソッドの違いは以下のとおりです。

// String.Format

string name = "田中";

int age = 30;

string message1 = String.Format("名前: {0}, 年齢: {1}", name, age);

Console.WriteLine(message1);


// 文字列補間式

string message2 = $"名前: {name}, 年齢: {age}";

Console.WriteLine(message2);

特徴

String.Format

文字列補間式

可読性

インデックス番号で参照するため分かりにくい

変数名を直接記述するため分かりやすい

動的書式

実行時に書式文字列を変更可能

コンパイル時に固定

複雑な書式

複合書式指定が豊富

基本的な書式指定のみ

動的に書式文字列を変更する必要がある場合や、複雑な書式設定が必要な場合はString.Formatを使用し、シンプルな文字列結合や基本的な書式設定の場合は文字列補間式を使用するのがおすすめです。

2.C# String Formatによる0埋めの方法

数値の0埋めは、桁数を揃える必要があるときに使われます。特に連番管理やファイル名の生成、IDの統一表示などで使用されることが多いです。


この章では、C#のString.Formatメソッドを使用して数値を0埋めする方法を紹介します。

数値の0埋め書式設定

String.Formatでは、D書式指定子と桁数を組み合わせることで数値の0埋めができます。

String.Formatで数値の0埋めを書式設定する例は以下のとおりです。

int number = 42;


// 5桁の0埋め

string result1 = String.Format("{0:D5}", number);

Console.WriteLine(result1); // 出力: 00042


// 3桁の0埋め

string result2 = String.Format("{0:D3}", number);

Console.WriteLine(result2); // 出力: 042

なお、D書式指定子は10進数整数専用です。

より汎用的な0埋めには0を使用した書式パターンも使用できます。

int id = 123;

string paddedId = String.Format("{0:00000}", id);

Console.WriteLine(paddedId); // 出力: 00123

実際の業務システムでは、以下のような用途で0埋めが活用されます。

// 社員番号の生成例

int employeeId = 456;

string employeeNumber = String.Format("EMP{0:D6}", employeeId);

Console.WriteLine(employeeNumber); // 出力: EMP000456


// ファイル名の連番生成例

for (int i = 1; i <= 10; i++)

{

    string fileName = String.Format("data_{0:D3}.txt", i);

    Console.WriteLine(fileName);

    // 出力: data_001.txt, data_002.txt, ..., data_010.txt

}

小数点を含む数値の0埋め書式設定

小数点を含む数値を0埋めするには、整数部分と小数部分で異なる書式指定子を使用します。


F書式指定子を使用することで、小数点以下の桁数を指定できます。

double value = 123.45;


// 小数点以下2桁固定

string result1 = String.Format("{0:F2}", value);

Console.WriteLine(result1); // 出力: 123.45


// 小数点以下4桁固定(不足分は0埋め)

string result2 = String.Format("{0:F4}", value);

Console.WriteLine(result2); // 出力: 123.4500

整数部分と小数部分で個別に0埋めを設定する例は以下のとおりです。

double value = 12.3;


// 整数部分5桁、小数部分2桁で0埋め

string result1 = String.Format("{0:00000.00}", value);

Console.WriteLine(result1); // 出力: 00012.30


// 整数部分3桁、小数部分4桁で0埋め

string result2 = String.Format("{0:000.0000}", value);

Console.WriteLine(result2); // 出力: 012.3000

小数点以下を桁数制御することで、四捨五入した値を表現できます。

double preciseValue = 123.456789;


// 小数点以下2桁に制限(四捨五入)

string result1 = String.Format("{0:000.00}", preciseValue);

Console.WriteLine(result1); // 出力: 123.46

小数点を含む数値の0埋めでは、表示要件に応じて適切な桁数を設定することが重要です。特に金融システムや測定データの表示では、精度と可読性のバランスを考慮した書式設定が求められます。


関連記事

C#とは?基本文法や特徴、メリット、開発分野まで初心者に必要な情報をわかりやすく解説

3.C# String Formatによる日付の書式設定

日付と時刻の書式設定は、ログ出力、レポート作成、ユーザーインターフェースへの表示など、多くの場面で必要となります。


この章では、C#のString.Formatメソッドを使用して日付の書式を設定する方法を紹介します。

日付フォーマットの指定方法

String.Formatメソッドでは、標準の日付時刻書式指定子を使用することで、さまざまな形式での日付表示が可能です。


標準日時書式指定子の使用例は以下のとおりです。

DateTime currentDate = new DateTime(2024, 12, 25, 14, 30, 45);


// 短い日付形式

string shortDate = String.Format("{0:d}", currentDate);

Console.WriteLine(shortDate); // 出力: 2024/12/25


// 長い日付形式

string longDate = String.Format("{0:D}", currentDate);

Console.WriteLine(longDate); // 出力: 2024年12月25日


// 短い時刻形式

string shortTime = String.Format("{0:t}", currentDate);

Console.WriteLine(shortTime); // 出力: 14:30


// 長い時刻形式

string longTime = String.Format("{0:T}", currentDate);

Console.WriteLine(longTime); // 出力: 14:30:45

よく使用される標準日時書式指定子は以下になります。

書式指定子

説明

出力例

d

短い日付形式

2024/12/25

D

長い日付形式

2024年12月25日

t

短い時刻形式

14:30

T

長い時刻形式

14:30:45

f

長い日付と短い時刻形式

2024年12月25日 14:30

G

長い日付と長い時刻形式

2024年12月25日 14:30:45

g

短い日付と短い時刻形式

2024/01/01 12:34

F

長い日付と長い時刻形式

2024年12月25日水曜日 14:30:45

カスタム日付書式設定による応用方法

標準書式指定子では対応できない形式で日付を表示したい場合は、カスタム日付時刻書式文字列を使用します。カスタム日付書式設定を使用することで、業務要件に応じた柔軟な日付表示が実現できます。


カスタム日付書式設定の例は以下のとおりです。

DateTime businessDate = new DateTime(2024, 3, 5, 9, 15, 30);


// 年月日を区切り文字で区切る

string customFormat1 = String.Format("{0:yyyy-MM-dd}", businessDate);

Console.WriteLine(customFormat1); // 出力: 2024-03-05


// 日本語混在形式

string customFormat2 = String.Format("{0:yyyy年M月d日}", businessDate);

Console.WriteLine(customFormat2); // 出力: 2024年3月5日


// 時分秒の詳細表示

string customFormat3 = String.Format("{0:HH時mm分ss秒}", businessDate);

Console.WriteLine(customFormat3); // 出力: 09時15分30秒

実際の業務システムでは以下のように使用されます。

// ログ出力用の統一書式

DateTime logTime = DateTime.Now;

string logEntry = String.Format("[{0:yyyy-MM-dd HH:mm:ss.fff}] システム開始", logTime);

Console.WriteLine(logEntry); // 出力: [2025-05-28 15:30:45.123] システム開始


// ファイル名用の日付書式

DateTime fileDate = DateTime.Now;

string fileName = String.Format("backup_{0:yyyyMMdd_HHmmss}.sql", fileDate);

Console.WriteLine(fileName); // 出力: backup_20250528_153045.sql


// レポート用の見出し

DateTime reportDate = DateTime.Today;

string reportHeader = String.Format("売上レポート ({0:yyyy年MM月dd日} 現在)", reportDate);

Console.WriteLine(reportHeader); // 出力: 売上レポート (2025年05月28日 現在)

よく使用されるカスタム日付書式設定は以下のとおりです。

書式指定子

説明

表示例

yyyy

4桁の年

2024

yy

2桁の年

24

MMMM

月の完全名

1月

MMM

月の省略名

1月

MM

2桁の月

01

M

1桁または2桁の月

1

dddd

曜日の完全名

月曜日

ddd

曜日の省略名

dd

2桁の日

01

d

1桁または2桁の日

1

HH

24時間形式の時間 (00-23)

22

hh

12時間形式の時間 (01-12)

10

mm

2桁の分

34

ss

2桁の秒

56

tt

午前/午後 (AM/PM)

午前


関連記事

【C#】DateTime完全ガイド:初期化・文字列変換から年月日・時間・ミリ秒操作まで詳細解説


.NET Frameworkとは?バージョン確認から.NETの違い、インストール、よくあるエラー解決策まで解説

4.C# String Formatを用いた16進数の表示方法

16進数は、コンピューターの内部表現を理解したり、色の表現、ネットワーク通信のデバッグなど、さまざまな場面で役立ちます。


この章では、C#のString.Formatメソッドを使用して16進数を設定する方法を紹介します。

16進数の表示方法

String.Formatメソッドで数値を16進数に変換するには、X または x 書式指定子を使用します。


X は大文字の16進数、x は小文字の16進数を表します。桁数を指定するには、X または x の後に桁数を記述します。桁が足りない場合は、先頭に0が追加されます。


16進数表示の例は以下の通りです。

int decimalValue = 255;


// 大文字の16進数表示

string upperHex = String.Format("{0:X}", decimalValue);

Console.WriteLine(upperHex); // 出力: FF


// 小文字の16進数表示

string lowerHex = String.Format("{0:x}", decimalValue);

Console.WriteLine(lowerHex); // 出力: ff


// 桁数指定付き16進数表示

string paddedHex = String.Format("{0:X4}", decimalValue);

Console.WriteLine(paddedHex); // 出力: 00FF

X または x 書式指定子を使用することで、さまざまな数値型を16進数に変換できます。

// byte型の16進数変換

byte byteValue = 170;

string byteHex = String.Format("{0:X2}", byteValue);

Console.WriteLine(byteHex); // 出力: AA


// long型の16進数変換

long longValue = 4294967295L;

string longHex = String.Format("{0:X8}", longValue);

Console.WriteLine(longHex); // 出力: FFFFFFFF


// 負の数値の16進数表示

int negativeValue = -1;

string negativeHex = String.Format("{0:X8}", negativeValue);

Console.WriteLine(negativeHex); // 出力: FFFFFFFF

16進数表示の利用シーン


16進数表示は、以下のようなシーンで利用されます。

  • 色の表現: Web開発や画像処理で色をRGB値で表現するときに、16進数が使われます (例: #FF0000 は赤色)。

  • メモリダンプ:プログラムのデバッグ時に、メモリの内容を16進数で表示して解析します。

  • ネットワーク通信:ネットワークパケットのデータを16進数で表示して、通信内容を解析します。

  • 暗号化:暗号化されたデータを16進数で表現することがあります。

16進数を使用してカラーコードを表示する例は以下の通りです。

// RGB値から色コードを生成

int red = 255;

int green = 128;

int blue = 0;


string colorCode = String.Format("#{0:X2}{1:X2}{2:X2}", red, green, blue);

Console.WriteLine(colorCode); // 出力: #FF8000


// 32ビット色コード(ARGB)の表示

uint argbColor = 0xFF808000;

string fullColorCode = String.Format("#{0:X8}", argbColor);

Console.WriteLine(fullColorCode); // 出力: #FF808000

メモリの内容を16進数で表示する例は以下になります。

byte[] memoryData = { 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x57, 0x6F, 0x72, 0x6C, 0x64 };


// 16進数とASCII文字の対応表示

for (int i = 0; i < memoryData.Length; i += 8)

{

    // アドレス表示

    string address = String.Format("{0:X4}: ", i);

    Console.Write(address);

    

    // 16進数表示

    for (int j = i; j < Math.Min(i + 8, memoryData.Length); j++)

    {

        string hexValue = String.Format("{0:X2} ", memoryData[j]);

        Console.Write(hexValue);

    }

    

    Console.WriteLine();

}

// 出力例:

// 0000: 48 65 6C 6C 6F 20 57 6F

// 0008: 72 6C 64

16進数は単なる数値表現の一形式ではなく、ハードウェアやOSに近い部分を扱うプログラミングや、デバッグ作業、データ解析など幅広く活用されています。適切な桁数指定と大文字・小文字の使い分けにより、目的に合わせて見やすい表示が実現可能です。

5.C# String Formatによる桁数指定と配列操作

String.Formatメソッドでは、複数の引数をまとめて書式設定することも可能です。配列を引数として渡すことで、複数の値を一度に書式設定できます。

また、桁数指定機能を活用することで、文字列の表示幅を合わせたり、右揃え、左揃えといった整形が可能です。この機能は、表形式のデータ表示やレポート生成の際に活用できます。


この章では、C#のString.Formatメソッドで桁数指定や配列操作する方法を紹介します。

桁数指定による表示幅の制御

String.Formatメソッドでは、書式指定子に数値を指定することで表示幅を制御できます。これにより、文字列の左右に空白を挿入したり、特定の幅に揃えたりできます。


桁数を指定して表示幅を制御する例は以下のとおりです。

string message = "Hello";


// 10文字幅で右寄せ表示

string rightAligned = String.Format("{0,10}", message);

Console.WriteLine(rightAligned); // 出力:      Hello


// 10文字幅で左寄せ表示

string leftAligned = String.Format("{0,-10}", message);

Console.WriteLine(leftAligned); // 出力: Hello

また、書式指定子と桁数指定を組み合わせることも可能です。桁数指定の構文は {インデックス,桁数:書式指定子} となります。桁数が正の値の場合は右寄せ、負の値の場合は左寄せになります。

double[] values = { 123.456, 7.89, 1000.1 };


Console.WriteLine("数値の桁揃え例:");

foreach (double value in values)

{

    // 右寄せ10桁、小数点以下2桁

    string formatted = String.Format("{0,10:F2}", value);

    Console.WriteLine(formatted);

}

// 出力:

// 数値の桁揃え例:

//     123.46

//       7.89

//    1000.10

配列や複数の引数を一括で書式設定する方法

String.Formatメソッドでは、複数の引数をまとめて書式設定することも可能です。配列を引数として渡すことで、複数の値を一度に書式設定できます。


String.Formatメソッドで配列要素を処理するには、ループ処理と組み合わせるとよいでしょう。

// 配列要素の一括書式設定例

int[] numbers = { 1, 22, 333, 4444, 55555 };


Console.WriteLine("配列要素の0埋め表示:");

foreach (int number in numbers)

{

    string formatted = String.Format("{0:D6}", number);

    Console.WriteLine(formatted);

}

// 出力:

// 配列要素の0埋め表示:

// 000001

// 000022

// 000333

// 004444

// 055555

また、インデックスを指定することで配列全体を1行表示することも可能です。

string[] names = { "Alice", "Bob", "Charlie" };


// 配列の要素を順番に表示

string formattedNames = String.Format("{0}, {1}, {2}", names[0], names[1], names[2]);

Console.WriteLine(formattedNames); // 出力: Alice, Bob, Charlie


関連記事

C# foreach完全ガイド|基本構文からコレクション操作・LINQ連携・ループ制御まで徹底解説


【C#】try-catchの使い方と例外処理|throwや複数例外の対応と使いどころを解説

6.まとめ

本記事では、C#のString.Formatメソッドについて、基本的な使い方から応用テクニックまでを解説しました。


String.Formatメソッドを活用すると文字列の書式設定が可能です。数値の0埋め、日付書式、16進数表示、桁数指定など、さまざまな書式を設定できます。


出力文字列を書式設定することで、ログ出力の統一、レポート生成やデータ表示の整形が可能です。String.Formatを適切に活用することで、保守性と可読性の向上が期待できます。


本記事で紹介したテクニックを参考に、String.Formatメソッドを活用して、より効率的で品質の高いC#アプリケーションの開発を目指しましょう。


本記事が皆様にとって少しでもお役に立てますと幸いです。


フリーランスボード」は、数多くのフリーランスエージェントが掲載するITフリーランスエンジニア・ITフリーランス向けの案件・求人を一括検索できるサイトです。


開発環境、職種、単価、稼働形態、稼働日数など様々な条件から、あなたに最適なフリーランス案件・求人を簡単に見つけることができます。

単価アップを目指す方や、自分の得意なスキルを活かせる案件に参画したい方は、ぜひ「フリーランスボード」をご利用ください。


自身に最適なフリーランスエージェントを探したい方はこちらよりご確認いただけます。

無料で登録したらスカウトを待つだけ フリーランスの新しい仕事探しを始めよう

フルリモート案件を 無料登録した方限定で配信中

目次

1.C# String Formatの基本概念と使い方

String.Formatメソッドの基本構文

C# 文字列補間式との違いと使い分け

2.C# String Formatによる0埋めの方法

数値の0埋め書式設定

小数点を含む数値の0埋め書式設定

3.C# String Formatによる日付の書式設定

日付フォーマットの指定方法

カスタム日付書式設定による応用方法

4.C# String Formatを用いた16進数の表示方法

16進数の表示方法

16進数表示の利用シーン

5.C# String Formatによる桁数指定と配列操作

桁数指定による表示幅の制御

配列や複数の引数を一括で書式設定する方法

6.まとめ