とにかく動かすPAD ‐ 改行を含む文字列を半角に変換する方法

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);

生成された変数:DstText

結果:
1234567890
ABCDEFGHIJ
!#$%&()

解説

文字列を「引数」にする場合

文字列を引数にする場合は “%SrcText%” のようにクォートで囲みます。

改行を含む場合

元のテキストに改行を含む場合、【正規表現のエスケープテキスト】を使うとうまくいくようです。

日本語を含む場合

元のテキストに日本語(全角文字)を含む場合、一度、エンコードして、デコードするとうまくいくようです。

text = encodeURIComponent("%SrcText%");
text = decodeURIComponent(text);

半角に変換する部分

!から~までの記号と英数字は全角と半角の文字コードの差が0xFEE0(65248)なので、この分だけずらせば変換できます。

コメント

タイトルとURLをコピーしました