🐶

PowerAppsで全角から半角へ変換するカスタム関数の作成

2023/09/22に公開

全角数字から半角数字へ変換するカスタム関数

数字の変換処理ですが、全角カナ⇒半角カナ、ひらがな⇒カタカナなどの変換にも対応できます。

出来上がりイメージ

作成方法

キャンバスアプリの作成

タブレットで作成してみました。

アプリの設定

設定>近日公開の機能>試験段階 の 拡張コンポーネントのプロパティをオンにします。

コンポーネントの作成

  1. 新しいコンポーネントを作成する
    コンポーネント>+新しいコンポーネント
    コンポーネント名を『CompConvertNum』に設定

  2. サイズを小さく

    アプリ上に表示するものではなく、関数と利用するものなので小さくしておきましょう
    CompConvertNumのサイズを幅と高さを10に設定しました。

  3. 関数を作成する
    +新しいカスタム プロパティを選択し 各値を設定します
    プロパティの型:関数
    プロパティ定義:出力
    データ型:テキスト

  4. パラメーターを作成
    +新しいパラメーターを選択し 各値を設定します
    データ型:テキスト
    必須:✓

  5. 作成ボタンを押す
    【作成】ボタンを押してカスタムプロパティを作成します

  6. 変換処理の作成
    作成したカスタムプロパティをクリックし、下記処理を追加する

    ▼コピペ用

With({tblNumList:Table( 
        {key:"1",val:"1"},{key:"2",val:"2"},{key:"3",val:"3"},{key:"4",val:"4"},{key:"5",val:"5"},
        {key:"6",val:"6"},{key:"7",val:"7"},{key:"8",val:"8"},{key:"9",val:"9"},{key:"0",val:"0"} 
    )}, 
    With({tblResult: 
        AddColumns( 
            Split(strInput,"") As SPLT, 
            strOutput,
            Coalesce( LookUp(tblNumList,key=SPLT.Value,val),SPLT.Value)
        ) }, 
        Concat(tblResult,strOutput) 
    ) 
) 

スクリーンでコンポーネントを利用する

  1. 作成したコンポーネントとテキスト入力を追加

  2. テキストに呼び出し処理を追加
    追加したTextInput1のOnChangeプロパティへ下記処理を設定

    ▼コピペ用

    UpdateContext({_strCnvt:CompConvertNum_1.ZenkakuToHankaku(Self.Text)});	
    

    さらにDefaultプロパティへ下記処理設定

  3. 完了
    上記で処理が完成となります

補足

大文字小文字変換

カスタムプロパティの処理で、全角と半角の対応表のようなテーブルを作成することで対応しました。そのため、この対応表をカスタマイズすることで、かな⇒カナの変換などの対応が可能です。
また、アルファベットのA⇒aなどの大文字小文字変換はUpper関数Lower関数が存在するのでそちらを使うと便利です。

全角アルファベットから半角アルファベットへ

With({tblNumList:Table( 
        {key:"A",val:"A"},{key:"B",val:"B"},{key:"C",val:"C"},{key:"D",val:"D"},{key:"E",val:"E"},
        {key:"F",val:"F"},{key:"G",val:"G"},{key:"H",val:"H"},{key:"I",val:"I"},{key:"J",val:"J"},
        {key:"K",val:"K"},{key:"L",val:"L"},{key:"M",val:"M"},{key:"N",val:"N"},{key:"O",val:"O"},
        {key:"P",val:"P"},{key:"Q",val:"Q"},{key:"R",val:"R"},{key:"S",val:"S"},{key:"T",val:"T"},
        {key:"U",val:"U"},{key:"V",val:"V"},{key:"W",val:"W"},{key:"X",val:"X"},{key:"Y",val:"Y"},{key:"Z",val:"Z"},
        {key:"a",val:"a"},{key:"b",val:"b"},{key:"c",val:"c"},{key:"d",val:"d"},{key:"e",val:"e"},
        {key:"f",val:"f"},{key:"g",val:"g"},{key:"h",val:"h"},{key:"i",val:"i"},{key:"j",val:"j"},
        {key:"k",val:"k"},{key:"l",val:"l"},{key:"m",val:"m"},{key:"n",val:"n"},{key:"o",val:"o"},
        {key:"p",val:"p"},{key:"q",val:"q"},{key:"r",val:"r"},{key:"s",val:"s"},{key:"t",val:"t"},
        {key:"u",val:"u"},{key:"v",val:"v"},{key:"w",val:"w"},{key:"x",val:"x"},{key:"y",val:"y"},{key:"Z",val:"z"}
    )}, 
    With({tblResult: 
        AddColumns( 
            Split(strInput,"") As SPLT, 
            strOutput,
            Coalesce(LookUp(tblNumList,key=SPLT.Value,val),SPLT.Value)
        ) }, 
        Concat(tblResult,strOutput) 
    ) 
)

Discussion