Help us understand the problem. What is going on with this article?

Power Automateで文字列を1文字ずつに分割する方法

前に英数字の全角と半角の変換をPower Appsで作った際、「入力文字列を1文字ずつに分割する」という操作を入れたのですが、それをPower Automateでもできないかと思って試したのでご紹介です。

Power Appsだと、 Split(文字列, "") で簡単に配列化することができるのですが、 Power Automateでも同じように split(文字列, '') としてみると・・・
image.png
このように、分割してくれないのです。

文字列を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]

image.png
まずは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文字]
という配列が、この数式で返されるわけです。

実際動作させてみると、
image.png

無事1文字ずつに分割できました!

入力の文字列を除いて、なんと1アクションです!!
image.png

これを利用すると全角半角変換の対象文字列を1文字ずつに分割して、変換できるんです。

まとめ

Power Automateでは・・・
- split関数の分割では、空文字での分割は不可
- substring関数を使うと、文字列を部分的に抽出できる
- rangeは賢い
- Selectすれば配列を簡単に作れる

あまり使いどころもないかもしれませんが、空文字("")での分割がしたくなったら試してみてください!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした