Power Automate Desktop(PAD)で、複数行の文字列に含まれる全角を全て半角にする方法です。
JavaScriptを使います。
サンプル
【変数の設定】
変数:SrcText
値:
1234567890
ABCDEFGHIJ
!#$%&()
【正規表現のエスケープテキスト】
エスケープするテキスト:%SrcText%
生成された変数:SrcText
【JavaScriptの実行】
実行するJavaScript:
text = encodeURIComponent("%SrcText%");
text = decodeURIComponent(text);
text = text.replace(/[!-~A-Za-z0-9]/g, function(ch){
return String.fromCharCode(ch.charCodeAt(0) - 0xFEE0);
});
WScript.Echo(text);
text = decodeURIComponent(text);
text = text.replace(/[!-~A-Za-z0-9]/g, function(ch){
return String.fromCharCode(ch.charCodeAt(0) - 0xFEE0);
});
WScript.Echo(text);
生成された変数:DstText
結果:
1234567890
ABCDEFGHIJ
!#$%&()
解説
文字列を「引数」にする場合
文字列を引数にする場合は “%SrcText%” のようにクォートで囲みます。
改行を含む場合
元のテキストに改行を含む場合、【正規表現のエスケープテキスト】を使うとうまくいくようです。
日本語を含む場合
元のテキストに日本語(全角文字)を含む場合、一度、エンコードして、デコードするとうまくいくようです。
text = encodeURIComponent("%SrcText%");
text = decodeURIComponent(text);
text = decodeURIComponent(text);
半角に変換する部分
!から~までの記号と英数字は全角と半角の文字コードの差が0xFEE0(65248)なので、この分だけずらせば変換できます。
コメント