PowerShellで文字列をバイトで区切って切り出す

| 2010年11月30日火曜日
メールの本文を生成する場合などに、きれいにフォーマットするためスペースなどで埋めたり、文字数でカットして成形したい時がある。
ただ、PowerShellだと、半角の「ABCD」というのと、全角の「ABCD」はおなじ4文字としてカウントされる。
そこでVBのLeftBのようにバイト数で切り取ってみる。

■使い方
> Get-SubStringBytes "ABCD" 2 2 #半角文字を2バイト目から2バイト切り取る
CD
> Get-SubStringBytes "ABCD" 2 2 #全角文字を・・・(略)
  1. function Get-SubStringBytes([String]$Text, [int]$StartIndex = 0, [int]$Length = 0) {
  2. $enc = [System.Text.Encoding]::Default
  3. $bytes = $enc.GetBytes($Text)
  4. return $enc.GetString($bytes, $StartIndex, $Length)
  5. }

1 コメント:

Unknown さんのコメント...

素晴らしいです、ありがとうございます!