今回はPowershellで0埋めする方法をまとめた日本語の分かり易い記事がないなあということで、どれだけ需要があるのかわかりませんが自分なりにMicrosoftの公式や海外のサイトを回って調べた結果を共有していきたいと思います。
Powershellにおける桁数指定の書式
ではさっそく本題に入りましょう。Powershellにおける桁数指定(0埋め)の基本的な用法は以下の通りです。一見何を言っているのかわかりづらいかもしれませんが、この後わかりやすいサンプルを紹介しているのでそちらと併せて確認してみてください。
基本的な構文
"{0:Format Specifiers}" -f 数値
Format Specifiersとは
Format Specifiers(直訳でフォーマット指定子)は数値のフォーマットを指定するために使用されます。例えば「D(Decimal)」であれば整数の10進数、「X(Hexadeximal)」であれば16進数で表記することになります。本記事は0埋めに関する記事ですのでこれに関係ないものには詳しく触れませんが、フォーマット指定子は以下のように色々あります。詳しく知りたい方は「Powershell Format Specifiers」などで調べてみてください。
D | 整数(10進数表記) |
X | 16進数表記 |
N | 実数(10進数表記) ※Dだと小数点を表現しようとした際エラーになりますが、 Nの場合小数点も表現できます。 ex) PS C:\Users\owner> "{0:N3}" -f 12.3456 12.346 #小数点以下4桁目で四捨五入されるみたい |
C | Currencyの略、通貨単位を表す ex) PS C:\Users\owner> "{0:C1}" -f 12345 ¥12,345.0 |
P | Percentの略、略称の通りパーセンテージ表記を表す |
例えば「001」というような数値を表現したい場合は以下のように記載します。
PS C:\Users\owner> "{0:D3}" -f 1 #フォーマット指定子は10進数のD,桁数は3なので「D3」
001
フォーマット指定子を変えれば16進数でも0埋めが可能です。
PS C:\Users\owner> "{0:X4}" -f 1234
04D2
あとは実用的な例を挙げるならば日付を表現するケースでしょうか。日付を表現する場合「01/01」といった具合に0埋めを利用したくなると思います。フォーマット指定子を使ってそれも実現できます。
PS C:\Users\owner> $Month = "{0:D2}" -f 01
PS C:\Users\owner> $Day = "{0:D2}" -f 01
PS C:\Users\owner> Write-Host "${Month}/${Day}"
01/01
他にパーセンテージ表記で0埋めをしたい場合
PS C:\Users\owner\Desktop> "{0:P3}" -f 0.675
67.500%
電話番号で0埋めをする場合
PS C:\Users\owner\Desktop> "{0:000-0000-0000}" -f 9012345678
090-1234-5678
いかがでしたでしょうか?Powershellで0埋めする方法について簡単に解説しました。0埋めする方法は他にもありますがフォーマット指定子を使うと色々な表現ができるのでこれを気にキャッチアップしてみると良いかと思います。