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

Power Appsで2種以上の文字列で文字列分割を行う

はじめに

おもむろにですが...

contributes.menus["editor/context"][0].group

こういう文字列がありまして、これをPowerAppsで

["contributes","menus","editor/context","0","group"]

こんな配列にしたかった時のTIPSです。
※実際にはもう少しいろんなところに [ やら . が入ります

この処理を行うには少なくとも3つの操作が必要だと思われます。
1. "."ピリオド でSplit
2. "[" カッコでSplit
3. "]"を削除

ここで厄介なのは1,2です。PowerAppsのSplitは分割に利用できる文字列は1つです。
Split("Hello/World","/") こんな書式。
ですので、AでSplitしてBでもSplitするみたいな操作は、素直にはできないです。
また、Splitの対象は文字列です。なので、
Split(Split("Hello/World","/"),"o")
こういう操作もできません。

2つの文字列で文字列分割

ではどうするか。余計なコレクションも生み出したくない。そんな時には、以下のような数式で解決できました!

Ungroup(
    ShowColumns(
        AddColumns(
            Split(
                "Hello/World",
                "/"
            ),
            "SpSpRes",
            Split(
                Result,
                "o"
            )
        ),
        "SpSpRes"
    ),
    "SpSpRes"
)

Hello/World を例として、処理の流れを見ていきます。

STEP1 : 文字列分割1

数式の一番深いところは

Split("Hello/World","/")

この単純な分割です。これによって作られるものは、"Result"という列名の配列です。
image.png

この結果の各行をさらに"o"で分割して、一つにまとめた配列を作るのがゴールです。

STEP2: AddColumns

STEP1でできた結果にAddColumnsをしています。

AddColumns(
    [STEP1の数式],
    "SpSpRes",
    Split(
        Result,
        "o"
    )
)

STEP1の結果できる配列は、列名が"Result"です。
ここでやっているのは、そのResultの値を、さらに"o"で分割した結果を、SpSpRes"という列名でAddColumnしなさいという数式です。
これを実行すると以下のような入れ子の配列が生成されます。
image.png

ここまでできたらほとんど完成です。

STEP3 : ShowColumns

ここではShowColumnsで、SpSpRes (ちょうど入れ子になっている部分) のみ表示させています。
image.png

STEP4 : Ungroup

入れ子の列はUngroupで解除です!
これで結果として、"Result"を列名とした、"/"と"o"という2種の文字列で分割した結果の配列が得られました。
image.png

おわり

2つの文字列で文字列を分割する場合には、
Split→AddColumns(...,Split())→ShowColumns→Ungroup
という手順で、余計な変数やコレクションを作らずに配列を得ることができます。
3つ以上の場合、素直には、ここで得られた結果をベースにもう一度同じ操作を行えばよいでしょう。
ぜひ何かの機会にご活用ください。

参考:
- Ungroup + Table = UNION (ALL)
- Power Appsで一意なデータを取り出す方法

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
ユーザーは見つかりませんでした