適材適所

PowerShellやVBAなどプログラミング系の話多めで

【PowerShell】文字列を大文字・小文字に変換する

ユーザーが入力してきた値を比較するときや、

入力された値の表記の揺れを統一したいとき等に

活躍する、大文字・小文字変換。

PowerShellはオブジェクト指向のシェルなので、

文字列すらもオブジェクトとなるります。

そのため、文字列自身が、自分自身を大文字、小文字に

変換するためのメソッドを持ち合わせています。

PowerShellでは、文字列の後に.(ドット)を付ければ

タブキーを押すことで予測変換候補として出てきてくれるので

わざわざ定義済みメソッド、関数名を記憶しておく必要がありません。

おっと、ちょっと話がややこしくなりそうです。

本題に移りましょう!

ToUpper()/ToLower()

一番素直な方法が、StringクラスのToUpper()メソッドとToLower()メソッドを使う方法です。

変換したい文字列の後ろに.(ドット)でつなげてあげます。

 
'PowerShell'.ToUpper()
'PowerShell'.ToLower()

実行結果

POWERSHELL
powershell

見てわかる通り、ToUpper()は大文字に、ToLower()は小文字に変換できます。

Stringクラスなら、つまり文字列なら.(ドット)に続けてこれらのメソッドを書けば簡単に変換することができます。

大文字、小文字に変換するのは必ず文字列なので、ほぼ必ずStringクラスということになるかと思います。

Visual BasicのuCase()/LCase()

どうしてもオブジェクト指向が好きになれない。

そんなあなたはVisual BasicのuCase()/LCase()メソッドを使ってみてはいかがでしょうか。

使い方は簡単。

 
Add-Type -AssemblyName Microsoft.VisualBasic
[Microsoft.VisualBasic.Strings]::uCase('PowerShell')
[Microsoft.VisualBasic.Strings]::LCase('PowerShell')

実行結果

POWERSHELL
powershell
Add-TypeコマンドレットでVisual Basicを読み込みます。

そしてそれぞれの引数に変換したい文字列を指定します。

uCase()が大文字、LCase()が小文字です。

引数に対象の文字列を指定するところが、非オブジェクト指向っぽいですね。

まぁ、PowerShellを使っていながらこんな回り道をすることもありませんが・・・。

オブジェクト的な考え方を理解するにはいい例かと思います。

こんな方法もあるよ、的なことで頭の片隅に置いておいていただければいいかと思います。

終わりに

以上、PowerShellで文字列を大文字・小文字に変換する方法の紹介でした。

やっぱりオブジェクト指向になれてしまうと古い言語に触るとき、

「うへぇ」ってなりますね。

なんだかまとめになっていませんが、とにかくPowerShellのオブジェクト、

超便利、ということが言いたいということでお願いします。

ここまでお読みいただき、ありがとうございました。

PowerShellの変換系の関連記事

www.tekizai.net