前に英数字の全角と半角の変換をPower Appsで作った際、「入力文字列を1文字ずつに分割する」という操作を入れたのですが、それをPower Automateでもできないかと思って試したのでご紹介です。
Power Appsだと、 Split(文字列, "")
で簡単に配列化することができるのですが、 Power Automateでも同じように split(文字列, '')
としてみると・・・
このように、分割してくれないのです。
文字列を1文字ずつに分割する
ではどうするかというと、substring関数を利用します。
substring関数は、与えられた文字列の、N文字目からM文字を取り出すという関数です。
例えば
substring('HelloWorld',2,3) --> llo
こんな風に文字列を抽出できます。注意しなければいけないのは、「N文字目」が0から始まるところです。
ここだけ気を付ければ、任意の文字列を1文字ずつに分割するには**substring(文字列,N,1)**とすればいいとわかります。
反復処理でApply for each を使ってもいいのですが、1アクションで済ませることができるので、そちらを紹介します。
Select + range + substring
何か決まった規則で配列を作るときはSelectアクションが有効です。このアクションの詳細はShibateaさんの投稿をご覧ください。
今回の方法では、Selectの入力として、rangeを利用します。
※rangeはrange(N,M)で、NからM個の整数列を返す関数 ex: range(2,3) --> [2,3,4]
まずはrange関数で、0~入力文字の長さ分だけ整数の配列を用意しました。
Hello Worldの例では、空白も含めて [0,1,2,3...,10]の配列が生成されます。
次にSelectアクションのMapですが、ここは前の投稿で紹介した手順を用います。
中に入れる数式は
substring(variables('InputString'), item(), 1)
です。
この場合のitem()は、[0,1,2,3,...,10]の各数字になります。つまり、
[0文字目から1文字, 1文字目から1文字, 2文字目から1文字....,10文字目から1文字]
という配列が、この数式で返されるわけです。
無事1文字ずつに分割できました!
これを利用すると全角半角変換の対象文字列を1文字ずつに分割して、変換できるんです。
まとめ
Power Automateでは・・・
- split関数の分割では、空文字での分割は不可
- substring関数を使うと、文字列を部分的に抽出できる
- rangeは賢い
- Selectすれば配列を簡単に作れる
あまり使いどころもないかもしれませんが、空文字("")での分割がしたくなったら試してみてください!