前置き
データクレンジングとして、英数字は全角を半角にしつつ、半角カタカナは全角カタカナにしたいということは往々にしてあるかと思います。
それをPowershellで実施する手順のご紹介です。ネタ元は、以下のページ2つの合わせ技です。
半角→全角、全角→半角の数値変換スクリプト
半角カナを全角カナに変換する
変換コード
「半角カタカナだけ全角へ変換」のForEach処理だけ切り出せば半角カタカナから全角カタカナへの変換が実現します。
Function全体では英数字の半角化も行っておりデータクレンジングでよくある手法になっています。
なお、ForEachで添字の$iを$NT.lengthにしている($NT.length -1 ではない)ので、最終文字が半角カタカナだった場合でも$CTの結合処理に行くことを実行確認してます。
ですが、バージョンによって挙動が変わる可能性もありますので、最終文字だけ変換されない場合にはReturnする前にElse内の全角化+文字列結合処理を付け加えてください。
また、初期化処理をFunction内に組み込みたい人のために[reflection.assembly]の処理を>$Nullしてます。(出力があるので、Returnに混入する)
大量のテキストを変換させるなら素直にGlobalしたほうが処理は早いと思ったので上記では外出ししてます。
あと、試験結果でわかるように、全角から半角に変換する際にシングルクォートの開始記号がただのシングルクォートになります。そりゃそうですね。
ただ、全角にした際に文字コードFA56のシングルクォートになります。期待値は8166じゃないですかね。この辺はMicrosoftのセンスを疑わざるを得ません。
そんな訳で、過信は禁物です。
0 件のコメント:
コメントを投稿