C# Tips | 文字列処理:パディング(右)

C# C#
スポンサーリンク

はじめに 「右パディング」は“枠を決めて、左にそろえて並べる”技

左パディングが「右寄せ」だとしたら、
右パディングはその逆で「左寄せ」をきれいにそろえるためのテクニックです。

業務システムだと、例えばこんな場面でよく出てきます。

商品名を一定幅で左にそろえて表示したい
固定長ファイルで「名前は20文字、右側はスペース埋め」と決まっている
コードの後ろをスペースで埋めて、全体の長さをそろえたい

こういうときに使うのが 右パディング(Right Padding) です。
C# には、これを一発でやってくれる PadRight というメソッドが用意されています。

ここから、PadRight の基本、スペース埋めと任意文字埋め、固定長フォーマットでの使い方、
そして業務ユーティリティとしてのまとめ方まで、順番にかみ砕いていきます。


基本:string.PadRight で右パディングする

PadRight のシグネチャと意味

string 型には、次のようなメソッドがあります。

string s = "ABC";
string padded1 = s.PadRight(6);          // 幅6、埋め文字はスペース
string padded2 = s.PadRight(6, '.');     // 幅6、埋め文字は '.'
C#

PadRight には2つのオーバーロードがあります。

string PadRight(int totalWidth)
string PadRight(int totalWidth, char paddingChar)
C#

意味はこうです。

totalWidth は「最終的にしたい文字列の長さ」です。
paddingChar は「足りない分を右側に埋めるときに使う文字」です(省略時はスペース ' ')。

元の文字列がすでに totalWidth 以上の長さなら、そのまま返されます。
「切り捨て」はされない、というのが大事なポイントです。

スペースで右パディング(左寄せ表示)

まずはデフォルト(スペース埋め)の例を見てみます。

string s1 = "A";
string s2 = "AB";
string s3 = "ABC";

Console.WriteLine($"[{s1.PadRight(4)}]");
Console.WriteLine($"[{s2.PadRight(4)}]");
Console.WriteLine($"[{s3.PadRight(4)}]");
C#

出力イメージはこうなります。

[A   ]
[AB  ]
[ABC ]
[ABCD] // もし "ABCD".PadRight(4) ならそのまま

左側に文字が寄り、右側がスペースで埋められているのが分かると思います。
コンソール表示や帳票で「文字列を左にそろえたい」ときに、とてもよく使います。


任意の文字で右パディングする

ドットやゼロなど、好きな文字で埋める

スペースではなく、任意の文字で右側を埋めたい場合は、
第二引数に埋め文字を渡します。

string s = "ABC";

Console.WriteLine(s.PadRight(8, '.')); // "ABC....."
Console.WriteLine(s.PadRight(8, '_')); // "ABC_____"
C#

PadRight(8, '.') は「長さ8になるまで右側を ‘.’ で埋める」という意味です。
元の文字列が8文字以上なら、そのまま返されます。

固定長フォーマットでの使いどころ

固定長ファイルやレガシー連携では、
「名前は20バイト、足りない分はスペース埋め」
「コードは10文字、足りない分は右側をスペースで埋める」

といった仕様がよくあります。

例えば、商品名を20文字幅で左寄せしたい場合はこう書けます。

string name = "りんご";
string fixedName = name.PadRight(20, ' ');
// "りんご" の後ろにスペースが並び、全体で20文字になる
C#

この fixedName をそのままファイルに書き出せば、
「商品名は20文字固定」という仕様を簡単に満たせます。


右パディングと左パディングの違いを整理する

どちらも「長さをそろえる」ための道具

左パディング(PadLeft)と右パディング(PadRight)は、
どちらも「文字列の長さをそろえる」ためのメソッドです。

違いは「どちら側に埋めるか」です。

左パディング
左側に埋める → 右寄せになる
例:"1".PadLeft(3, '0')"001"

右パディング
右側に埋める → 左寄せになる
例:"A".PadRight(4, ' ')"A "

見た目のイメージとしては、

右にそろえたい(数字の桁をそろえたい) → 左パディング
左にそろえたい(文字列を左に寄せたい) → 右パディング

と覚えておくと、迷いにくくなります。


業務ユーティリティとしてまとめる

null をどう扱うかを決めておく

業務コードでは、「null が来たらどうするか」を毎回悩みたくありません。
ユーティリティ側でルールを決めておくと、呼び出し側が楽になります。

例えば、「null は空文字として扱う」方針で書くとこうなります。

public static class RightPaddingUtil
{
    public static string RightPadWithSpace(string? value, int totalWidth)
    {
        value ??= string.Empty;
        return value.PadRight(totalWidth, ' ');
    }

    public static string RightPadWithChar(string? value, int totalWidth, char paddingChar)
    {
        value ??= string.Empty;
        return value.PadRight(totalWidth, paddingChar);
    }
}
C#

使い方はこんな感じです。

Console.WriteLine($"[{RightPaddingUtil.RightPadWithSpace("A", 4)]");   // [A   ]
Console.WriteLine($"[{RightPaddingUtil.RightPadWithSpace(null, 4)]"); // [    ]
Console.WriteLine($"[{RightPaddingUtil.RightPadWithChar("ABC", 6, '.')}]"); // [ABC...]
C#

RightPadWithSpace という名前を見るだけで、「右側をスペースで埋めるんだな」と分かるのがポイントです。

固定長レコード用のヘルパーに組み込む

固定長ファイルを出力する処理では、
「項目ごとに幅とパディング方法が決まっている」ことが多いです。

例えば、こんな仕様を考えます。

顧客コード:10文字、右パディング(スペース)
顧客名:20文字、右パディング(スペース)

これをユーティリティで表現すると、こんなイメージになります。

public static class FixedLengthRecordBuilder
{
    public static string BuildCustomerRecord(string customerCode, string customerName)
    {
        string codePart = RightPaddingUtil.RightPadWithSpace(customerCode, 10);
        string namePart = RightPaddingUtil.RightPadWithSpace(customerName, 20);

        return codePart + namePart;
    }
}
C#

こうしておくと、「仕様変更で顧客名が30文字になった」といったときも、
この1箇所を直すだけで済みます。


「長すぎる文字列」はどう扱うか

PadRight は切り捨てない

PadRight は、「足りないときだけ埋める」メソッドです。
元の文字列が totalWidth 以上の長さなら、そのまま返されます。

Console.WriteLine("ABCDEFG".PadRight(5)); // "ABCDEFG"(そのまま)
C#

固定長ファイルなどで「必ず5文字以内にしたい、長すぎたら切り捨てたい」という要件がある場合は、
別途 Substring などで長さを制御する必要があります。

例えば、「左寄せで5文字にしたい(長すぎたら先頭5文字だけ)」というユーティリティはこう書けます。

public static string LeftAlignFixed(string? value, int totalWidth)
{
    value ??= string.Empty;

    if (value.Length > totalWidth)
    {
        value = value.Substring(0, totalWidth);
    }

    return value.PadRight(totalWidth, ' ');
}
C#

これなら、

Console.WriteLine($"[{LeftAlignFixed("ABC", 5)]");     // [ABC  ]
Console.WriteLine($"[{LeftAlignFixed("ABCDEFG", 5)]"); // [ABCDE]
C#

のように、「長すぎる場合は切り捨て、それ以外は右パディング」という挙動を一箇所に閉じ込められます。


まとめ 「右パディングユーティリティ」は“左にそろえて、フォーマットを守るための小さな職人”

右パディングは、見た目は地味ですが、

文字列を左にそろえて見やすくする
固定長フォーマットの仕様を守る
コードや名前の「枠」をきっちりそろえる

といった場面で、業務システムを静かに支えてくれる存在です。

押さえておきたいポイントは、

PadRight(totalWidth) はスペース埋め、PadRight(totalWidth, c) で任意文字埋め
右パディングは「左寄せ」、左パディングは「右寄せ」というイメージで覚える
null の扱い(空文字にするなど)はユーティリティ側でルール化しておく
固定長レコードでは「幅+右パディング」をヘルパーに閉じ込めると保守しやすい
長すぎる文字列は PadRight では切り捨てられないので、必要なら別途 Substring で制御する

ここまで理解できれば、「なんとなく PadRight を使っている」段階から一歩進んで、
“フォーマットと見た目のルールをコードとしてきちんと表現する”
業務・実務で使える右パディングユーティリティを、自分の手で設計・実装できるようになっていきます。

タイトルとURLをコピーしました