はじめに 「左パディング」は“桁をそろえて、きれいに並べる”技
業務システムでは、こんな表示やデータ形式がよく出てきます。
1 → 001 にしたい(3桁でゼロ埋め)A → A にしたい(4文字幅で右寄せ)12345 → 00012345 にしたい(8桁固定のコード)
こういう「足りない桁を左側に埋めて、長さをそろえる」処理が 左パディング(Left Padding) です。
C# には、これを簡単にやってくれる PadLeft というメソッドが用意されています。
ここでは、初心者向けに、
PadLeft の基本的な使い方
ゼロ埋め・スペース埋めの違い
数値を文字列にしてからパディングするパターン
業務ユーティリティとしてどうまとめるか
を、例題付きでかみ砕いて説明していきます。
基本:string.PadLeft で左パディングする
PadLeft のシグネチャと意味
string 型には、次のようなメソッドがあります。
string s = "123";
string padded = s.PadLeft(5); // 幅5、埋め文字はスペース
string paddedZero = s.PadLeft(5, '0'); // 幅5、埋め文字は '0'
C#PadLeft には2つのオーバーロードがあります。
PadLeft(int totalWidth)PadLeft(int totalWidth, char paddingChar)
意味はこうです。
totalWidth:最終的にしたい「文字列の長さ」paddingChar:足りない分を埋めるときに使う文字(省略時はスペース ' ')
元の文字列がすでに totalWidth 以上の長さなら、そのまま返されます(切り捨てはされません)。
スペースで左パディング(右寄せ表示)
まずはデフォルト(スペース埋め)の例です。
string s1 = "A";
string s2 = "AB";
string s3 = "ABC";
Console.WriteLine($"[{s1.PadLeft(4)}]");
Console.WriteLine($"[{s2.PadLeft(4)}]");
Console.WriteLine($"[{s3.PadLeft(4)}]");
C#出力イメージはこうなります。
[ A]
[ AB]
[ ABC]
[ABC] // もし "ABC".PadLeft(3) ならそのまま
文字列の左側にスペースが追加されて、右寄せになっているのが分かると思います。
コンソール表示や帳票で「桁をそろえて見やすくしたい」ときに便利です。
ゼロ埋めで左パディング(コードや番号でよく使う)
‘0’ を指定してゼロ埋めする
業務で一番よく使うのは、「数字をゼロ埋めして桁をそろえる」パターンです。
例えば、3桁のコードにしたい場合はこう書きます。
string code1 = "1";
string code2 = "12";
string code3 = "123";
Console.WriteLine(code1.PadLeft(3, '0')); // 001
Console.WriteLine(code2.PadLeft(3, '0')); // 012
Console.WriteLine(code3.PadLeft(3, '0')); // 123
C#ここで重要なのは、
PadLeft(3, '0') は「長さ3になるまで左側を ‘0’ で埋める」という意味
元の文字列が3文字以上なら、そのまま返る
というルールです。
数値をゼロ埋めしたいときは「一度文字列にする」
PadLeft は 文字列のメソッド なので、数値に対して直接は使えません。
数値をゼロ埋めしたいときは、いったん ToString() で文字列にしてからパディングします。
int n1 = 1;
int n2 = 12;
int n3 = 123;
Console.WriteLine(n1.ToString().PadLeft(3, '0')); // 001
Console.WriteLine(n2.ToString().PadLeft(3, '0')); // 012
Console.WriteLine(n3.ToString().PadLeft(3, '0')); // 123
C#この「数値 → 文字列 → パディング」という流れは、
注文番号・連番・コードなどでよく使うパターンです。
数値フォーマットとの違い:PadLeft と ToString(“D3”)
ToString の書式指定でもゼロ埋めできる
実は、数値のゼロ埋めには PadLeft 以外にも方法があります。ToString の書式指定を使う方法です。
int n1 = 1;
int n2 = 12;
int n3 = 123;
Console.WriteLine(n1.ToString("D3")); // 001
Console.WriteLine(n2.ToString("D3")); // 012
Console.WriteLine(n3.ToString("D3")); // 123
C#"D3" は「10進数(Decimal)で、最低3桁」という意味です。
足りない桁は自動的にゼロで埋めてくれます。
どちらを使うべきか?
数値のゼロ埋めだけが目的なら、ToString("D3") のほうが意図がはっきりしていておすすめです。
一方で、
文字列に対して任意の文字でパディングしたい
数値以外の文字列(コード、IDなど)にも同じ処理をしたい
といった場合は、PadLeft のほうが汎用的です。
イメージとしては、
数値専用のゼロ埋め → ToString("D桁数")
文字列全般の左パディング → PadLeft
と使い分けるときれいです。
業務ユーティリティとしてまとめる
「ゼロ埋め」「スペース埋め」を名前で分ける
毎回 PadLeft(3, '0') と書くのも悪くはないですが、
業務システムでは「意味のある名前のユーティリティ」にしておくと読みやすくなります。
public static class PaddingUtil
{
public static string LeftPadWithZero(string value, int totalWidth)
{
if (value == null) value = string.Empty;
return value.PadLeft(totalWidth, '0');
}
public static string LeftPadWithSpace(string value, int totalWidth)
{
if (value == null) value = string.Empty;
return value.PadLeft(totalWidth, ' ');
}
public static string LeftPadNumberWithZero(int number, int totalWidth)
{
return number.ToString().PadLeft(totalWidth, '0');
// あるいは number.ToString($"D{totalWidth}") でもOK
}
}
C#使い方はこんな感じです。
Console.WriteLine(PaddingUtil.LeftPadWithZero("123", 5)); // 00123
Console.WriteLine(PaddingUtil.LeftPadWithZero("1", 3)); // 001
Console.WriteLine(PaddingUtil.LeftPadWithSpace("A", 4)); // " A"
Console.WriteLine(PaddingUtil.LeftPadNumberWithZero(42, 4)); // 0042
C#LeftPadWithZero という名前を見るだけで、「左側をゼロで埋めるんだな」と分かるのがポイントです。
null や空文字の扱いをユーティリティ側で決めておく
上の例では、value が null のときに空文字に変換しています。
こうしておくと、呼び出し側で毎回 value ?? "" と書かなくて済みます。
「null をどう扱うか」はプロジェクトの方針にもよりますが、
ユーティリティの中でルールを決めておくと、コード全体がスッキリします。
実務での使いどころと注意点
よくある使いどころ
左パディングは、業務でこんな場面によく登場します。
固定長ファイルの出力(桁数をきっちり合わせる必要がある)
帳票やコンソール表示で、数字やコードを右寄せしたい
コードやIDを「一定桁数のゼロ埋め」で表現したい(例:INV-000123)
例えば、請求書番号を INV-000123 のようにしたい場合は、
int seq = 123;
string invoiceNo = "INV-" + PaddingUtil.LeftPadNumberWithZero(seq, 6);
// INV-000123
C#のように書けます。
「すでに長い文字列」はそのまま返されることを意識する
PadLeft は、「足りないときだけ埋める」メソッドです。
元の文字列が totalWidth 以上の長さなら、そのまま返されます。
Console.WriteLine("12345".PadLeft(3, '0')); // 12345(切り捨てられない)
C#「必ず3桁以内にしたい(長すぎたら切り捨てたい)」という要件がある場合は、
別途 Substring などで長さを制御する必要があります。
まとめ 「左パディングユーティリティ」は“桁をそろえて、機械にも人にも優しい文字列にする道具”
左パディングは、見た目は地味ですが、
桁をそろえて見やすくする
固定長フォーマットを守る
コードや番号を一定桁数で表現する
といった場面で、業務システムを支える重要なテクニックです。
押さえておきたいポイントは、
PadLeft(totalWidth) はスペース埋め、PadLeft(totalWidth, '0') でゼロ埋め
数値は一度 ToString() してからパディングする
数値のゼロ埋めだけなら ToString("D桁数") も便利
ユーティリティにまとめて「ゼロ埋め」「スペース埋め」を名前で表現すると読みやすい
元の文字列が長すぎる場合は、そのまま返される(切り捨てはされない)
ここまで理解できれば、「なんとなく PadLeft を使っている」段階から一歩進んで、
“業務のフォーマットや見た目のルールをコードとしてきちんと表現する”
左パディングユーティリティを、自分の手で設計・実装できるようになっていきます。
