はじめに
おもむろにですが...
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"という列名の配列です。
この結果の各行をさらに"o"で分割して、一つにまとめた配列を作るのがゴールです。
STEP2: AddColumns
STEP1でできた結果にAddColumnsをしています。
AddColumns(
[STEP1の数式],
"SpSpRes",
Split(
Result,
"o"
)
)
STEP1の結果できる配列は、列名が"Result"です。
ここでやっているのは、そのResultの値を、さらに"o"で分割した結果を、SpSpRes"という列名でAddColumnしなさいという数式です。
これを実行すると以下のような入れ子の配列が生成されます。
ここまでできたらほとんど完成です。
STEP3 : ShowColumns
ここではShowColumnsで、SpSpRes (ちょうど入れ子になっている部分) のみ表示させています。
STEP4 : Ungroup
入れ子の列はUngroupで解除です!
これで結果として、"Result"を列名とした、"/"と"o"という2種の文字列で分割した結果の配列が得られました。
おわり
2つの文字列で文字列を分割する場合には、
Split→AddColumns(...,Split())→ShowColumns→Ungroup
という手順で、余計な変数やコレクションを作らずに配列を得ることができます。
3つ以上の場合、素直には、ここで得られた結果をベースにもう一度同じ操作を行えばよいでしょう。
ぜひ何かの機会にご活用ください。
参考: