LoginSignup
3
0

More than 3 years have passed since last update.

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

Posted at

はじめに

おもむろにですが...

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で一意なデータを取り出す方法

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0