ユーザーが入力してきた値を比較するときや、入力された値の表記の揺れを統一したいときなどに活躍する、大文字・小文字変換。
PowerShellはオブジェクト指向のシェルなので、文字列すらもオブジェクトとなるります。
そのため、文字列自身が、自分自身を大文字、小文字に変換するためのメソッドを持ち合わせています。
PowerShellでは、文字列の後に.(ドット)を付ければタブキーを押すことで予測変換候補として出てきてくれるのでわざわざ定義済みメソッド、関数名を記憶しておく必要がありません。
おっと、ちょっと話がややこしくなりそうです。
本題に移りましょう!
ToUpper()/ToLower()
一番素直な方法が、StringクラスのToUpper()メソッドとToLower()メソッドを使う方法です。
変換したい文字列の後ろに.(ドット)でつなげてあげます。
#POWERSHELL 'PowerShell'.ToUpper() #powershell 'PowerShell'.ToLower()
見て頂くとわかる通り、ToUpper()は大文字に、ToLower()は小文字に変換できます。
Stringクラスなら、つまり文字列なら.(ドット)に続けてこれらのメソッドを書けば簡単に変換することができます。
大文字、小文字に変換するのは必ず文字列なので、ほぼ必ずStringクラスということになるかと思います。
Visual BasicのuCase()/LCase()
どうしてもオブジェクト指向が好きになれない。
そんなあなたはVisual BasicのuCase()/LCase()メソッドを使ってみてはいかがでしょうか。
使い方は簡単。
Add-Type -AssemblyName Microsoft.VisualBasic #POWERSHELL [Microsoft.VisualBasic.Strings]::uCase('PowerShell') #powershell [Microsoft.VisualBasic.Strings]::LCase('PowerShell')
Add-TypeコマンドレットでVisual Basicを読み込みます。
そしてそれぞれの引数に変換したい文字列を指定します。
uCase()が大文字、LCase()が小文字です。
引数に対象の文字列を指定するところが、非オブジェクト指向っぽいですね。
まぁ、PowerShellを使っていながらこんな回り道をすることもありませんが・・・。
オブジェクト的な考え方を理解するにはいい例かと思います。
こんな方法もあるよ、的なことで頭の片隅に置いておいていただければいいかと思います。
VisualBasicの超便利メソッドのStrConvメソッド
せっかくVisulBasicが使えるので、
VisulBasicの文字列操作系のメソッドのなかでもピカイチの使い勝手を誇る、
StrConvメソッドを使わない手はないかも知れません。
Add-Type -AssemblyName Microsoft.VisualBasic #小文字から大文字(powershell⇒POWERSHELL) [Microsoft.VisualBasic.Strings]::StrConv("powershell",[Microsoft.VisualBasic.VbStrConv]::Uppercase) #大文字から小文字(POWERSHELL⇒powershell) [Microsoft.VisualBasic.Strings]::StrConv("POWERSHELL",[Microsoft.VisualBasic.VbStrConv]::Lowercase)
話は逸れてしまいますが、StrConvは大文字小文字変換以外にも様々な文字列変換をこなすことができる超便利メソッドです。
次にStrConvの使い方の一例を示します。
#カタカナ⇒ひらがな(パワーシェル⇒ぱわーしぇる) [Microsoft.VisualBasic.Strings]::StrConv("パワーシェル",[Microsoft.VisualBasic.VbStrConv]::Hiragana) #半角から全角(PowerShell⇒PowerShell) [Microsoft.VisualBasic.Strings]::StrConv("PowerShell",[Microsoft.VisualBasic.VbStrConv]::Wide)
Microsoft.VisualBasic.VbStrConv定数を変えることで様々な変換ができますよ!
終わりに
以上、PowerShellで文字列を大文字・小文字に変換する方法について紹介してみました。
StringクラスでToUpperメソッドなどを使うのもの便利ですが、vbのStrConvメソッド、これは文字列操作系のメッセージの中でもダントツの使いやすさを誇っていますので、どちらを取るかというところですね・・・。
vbのLCase/uCaseは完全にかすんでしまっていますが・・・。
まぁ、どれも便利なのでぜひ、覚えて帰ってくださいね!
というわけで、ここまでお読みいただき、ありがとうございました。