文字列を使いこなす ~その3~

・任意の文字列の文字数をカウントする

任意の文字列の文字数をカウントするにはLengthプロパティを使用します。

たとえば、”おはよう” の文字数をカウントするには下記のようにします。

"おはよう".Length

変数に入っている文字数もカウントすることができます。

$moji = "おはよう"
$moji.Length

バイト数をカウントする

先ほどは、Lengthプロパティを使用して文字数をカウントしました。

文字数ではなく、バイト数をカウントするにはEncodingクラスのGetByteCountメソッドを使用します。

下記はGetByteCountメソッドを使用して、バイト数をカウントする例です。

実行すると8を返します。

EncodingクラスのGetByteCountメソッド

文字列を使いこなす ~その2~

・指定した文字のANSI文字コードを取得する

PowerShellで指定した文字のANSI文字コードを取得するには、指定した文字(char型)を取得して、バイト値に変換する必要があります。

[byte][char]ANSI文字コードを取得したい文字

と入力することで、ANSI文字コードを取得することができます。

・ANSI文字コードに関連付けられた文字を取得する

PowerShellで指定したANSI文字コードに関連付けられた文字を取得するには、指定したANSI文字コードをChar型に変換します。

[char]ANSI文字コード

と入力することで、ANSI文字コードに関連付けられた文字を取得することができます。

文字列を使いこなす ~その1~

・文字配列を作る

文字列をカンマで区切って変数に代入します。

$fruit = "Apple","Banana","Orange"

$fruit[0]にはApple, $fruit[1]にはBanana, $fruit[2]にはOrangeが格納されます。

・文字配列を連結して1つの文字列にする

stringクラスのJoinメソッドを使用して連結することができます。

Joinメソッドの第1引数には文字列を連結するときの文字を、第2引数には配列変数を指定します。

下記を実行すると、Apple-Banana-Orangeという文字列が作成されます。

[string]::Join("-",$fruit)

文字列を分割する

文字列はsplitメソッドで分割することができます。引数には分割に使用する文字を指定します。
たとえば、先ほど作成した”Apple-Banana-Orange”を”-“で分割するには、下記のようにします。

"Apple-Banana-Orange".Split("-")

文字列を使いこなす1

月の最終日を求めるには

Get-Dateコマンドレットを使用して月の最終日を求める方法を紹介します。

最終日は、「翌月の1日の前の日」で求めることができます。

たとえば、今現在が6月13日であるとすれば、翌月の1日は7月1日となります。

なので7月1日の前日が今月の最終日となります。

これをPowerShellで表すには、まず Get-Dateコマンドレットの-Dayパラメータに1を指定して、今月の1日を取得します。

(Get-Date -Day 1)

次に、AddMonthsメソッドを使用して今月の1日からみた1ヶ月後(要するに翌月の1日)を求めます。

(Get-Date -Day 1).AddMonths(1)

最後に、AddDaysメソッドを使用して翌月の1日からみた1日前を求めます。

(Get-Date -Day 1).AddMonths(1).AddDays(-1)

最終日を求める例

 

上記を応用すれば下記のようにして、先月の最終日、来月の最終日を求めることができます。

・先月の最終日

(Get-Date -Day 1).AddDays(-1)

・来月の最終日

(Get-Date -Day 1).AddMonths(2).AddDays(-1)

日付取得で使える便利なメソッドまとめ

PowerShellで日付を取得するにはGet-Dateコマンドレットを使用します。

Get-Dateが返す値はDateTime構造体なので、DateTime構造体が持つメソッドを使用することができます。

N秒後、N分後、N時間後のように、未来を取得するにはAddが付くメソッドを使用します。

メソッド 説明
AddDays 現在日時に指定した日数を加算します
AddHours 現在日時に指定した時間を加算します
AddMilliseconds 現在日時に指定したミリ秒を加算します
AddMonths 現在日時に指定した月数を加算します
AddSeconds 現在日時に指定した秒を加算します
AddYears 現在日時に指定した年数を加算します

たとえば、2ヶ月後を求めたい場合はAddMonthsメソッドの引数に2を渡します。

(Get-Date).AddMonths(2)

2ヶ月前を求めることも可能で、この場合は-2を指定します。

(Get-Date).AddMonths(-2)

日付のみ、時間のみを文字列として取得することも可能です。

日付のみを文字列として取得したい場合はToShortDateStringメソッドを使用します。

(Get-Date).ToShortDateString()

時刻のみを文字列として取得したい場合はToShortTimeStringメソッドを使用します。

(Get-Date).ToShortTimeString()

任意の書式で日付を出力したい場合はToStringメソッドを使用します。

ToStringメソッドの引数には、様々な書式を指定することができます。指定可能な書式についてはhttp://msdn.microsoft.com/ja-jp/library/8kb3ddd4(v=vs.80).aspxを参照ください。

たとえば年4桁月2桁日2桁で出力したい場合には下記のようにします。

(Get-Date).ToString("yyyy年MM年dd日")

日付取得メソッドまとめ