Home > Windows にまつわる e.t.c.

出力の整形


PowerShellの処理結果出力はいろいろありますが、個人的に一番使いであると思う整形です。

C/C++だと、printfでフォーマット出力しますが、こいつをPowerShellでやるとどんな感じになるかってお話です。

PowerShellにもフォーマットを指定する文字があるので、まずはそいつから。

 

フォーマット指定文字

# 1桁の数値(余分な0は表示されない)
0 1桁の数値(0表示される)
.(ピリオド) 小数点位置の指定
,(カンマ) カンマ編集の指定
x 小文字16進(x4とすると4桁を指定)
X 大文字16進(X4とすると4桁を指定)

 

フォーマット表現

フォーマット文字列を使ってフォーマット表現はこんな感じにします。

数値をカンマ付にする

#,0

数値を固定長にしてリーディングゼロをつける

000000

小数以下の指定桁表示

0.000

4桁の小文字16進数

x4

4桁の大文字16進数

X4

 

数値のフォーマット(ToStringメソッドを使う)

では、具体的にフォーマット文字列を使って出力のフォーマットをします。まずは単純な数値のフォーマットです。

数値をカンマ付にする

PS C:\> $Num = 12345.6789
PS C:\> $Num.ToString("#,0")
12,346

数値を固定長にしてリーディングゼロをつける

PS C:\> $Num = 12345.6789
PS C:\> $Num.ToString("00000000")
00012346

小数以下の指定桁表示

PS C:\> $Num = 12345.6789
PS C:\> $Num.ToString("0.00")
12345.68

4桁の小文字16進数

PS C:\> $Num= 255
PS C:\> $Num.ToString("x4")
00ff

4桁の大文字16進数

PS C:\> $Num= 255
PS C:\> $Num.ToString("X4")
00FF

 

複数項目の整形

「-f」を使う

C/C++のprintfっぽい使い方ができるのが「-f」です。1つの値は「{n}」で表現し、nが変数の順番になります。

項目の表示幅は「{n,s}」のようにsで表現します。nだけだと右揃え、-sにすると左揃えになります。

数値のフォーマットは「{n,s:Format}」で表現します。

PS C:\> $Str = "ABCD"
PS C:\> $Num = 12345.678
PS C:\> "Sring:{0,-8} Number:{1,12:#,0.00}" -f $Str, $Num
Sring:ABCD     Number:   12,345.68

 

「[String]::Format」を使う

ちょっと変わったところでは、Stringのスタティック メンバーを使って「[String]::Format」でも整形できます。表記はこっちの方がpritfに近いかも?

$Str = "ABCD"
$Num = 12345.678
[String]::Format("Sring:{0,-8} Number:{1,12:#,0.00}", $Str, $Num)
Sring:ABCD     Number:   12,345.68

 

 

back.gif (1980 バイト)

home.gif (1907 バイト)

Copyright © MURA All rights reserved.