Tech Note

Azure, Office 365, Power Platform, etc... の勉強手記

Power Automate で文字列中央にある数値文字を抽出する

abcd123efgh という文字列があったときに、中央にある連続する数値文字 123 を抽出したいケースを Power Automate で考えます。

前提

過去の記事の応用編になります。まずはこちらを参照してください。

shibatea.hatenablog.jp

検討事項

  • 文字列の中から連続する文字を抽出したいので substring 関数が使える
  • 数値文字の先頭インデックスと末尾インデックスが定まれば抽出可能
  • 先頭インデックスの取り方は前提記事を参照
  • 末尾インデックスの取り方は前提記事でやっていたことの逆バージョン
  • つまり indexOf 関数を使ってるところは lastIndexOf 関数を使い、最小値 を取得していたところは 最大値 を取得すればいい

作成した Power Automate

f:id:shibatea:20200610080443p:plain
対象文字列の中央にある連続する数値文字を抽出する

解説

過去記事の差分箇所を解説します。

選択アクションで数値文字の末尾インデックスを取得

f:id:shibatea:20200610081024p:plain

既存の選択アクションをクリップボードにコピーして貼り付けます。(初めてクリップボード機能を使って感動した!)
indexOf 関数を使ってた箇所を lastIndexOf 関数に書き換えるだけ。

アレイのフィルター処理で lastIndexOf 関数の結果を絞り込み

f:id:shibatea:20200610081326p:plain

これも既存のフィルターアクションをクリップボードにコピーして貼り付けてから、差出人 部分を上記の選択アクションの出力に書き換えます。

数値文字の末尾インデックスを取得

f:id:shibatea:20200610081615p:plain

max 関数を用いて、フィルターした結果の配列の中から最大値を取りだします。

docs.microsoft.com

部分文字列を抽出

f:id:shibatea:20200610081759p:plain

取得した数値文字の先頭インデックスと末尾インデックスを用いて、抽出する数値文字の長さを計算します。
末尾インデックスから先頭インデックスを減算した結果に 1 を足すことを忘れずに。

まとめ

Power Automate で文字列中央にある数値文字を抽出しました。
連続する数値文字であればどこでも抽出可能なので、過去記事の拡張版になります。