Powershell で String と Char 配列の相互変換、Char と文字コードの相互変換に苦労したのでメモ。
- String から Char 配列にする
ToCharArray メソッドを使う。
PS> $a = "abcde" PS> $b = $a.ToCharArray() PS> $b.GetType().Name Char[] PS> $b a b c d e
- Char 配列から String にする
- -Join を使う
-join の左辺には何も書かないのがポイント。
PS> $a = [Char[]](0x41, 0x42, 0x43, 0x44, 0x45) PS> $b = -join $a PS> $b ABCDE
- New-Object string を使う
string コンストラクタの第一引数に何も指定しないかのように書くのがポイント。(*1)
PS> $a = [Char[]](0x41, 0x42, 0x43, 0x44, 0x45) PS> $c = New-Object string (,$a) PS> $c ABCDE
(*1)
正確には () はコンストラクタの括弧ではないし、 , (カンマ)も演算子でコンストラクタの第一引数を省略しているわけではないです。詳しくは [PS1] Powershell の配列 の 4 項, 5 項 を参照。
- -Join を使う
- 文字コードを Char にする
Char でキャストする
PS> $a = [Char]0x41 PS> $a A
- Char から文字コードを得る
整数(Int16 など)でキャストする
PS> $a = [Char]"A" PS> $b = [Int16]$a PS> $b 65