PowerApps│文字列を思い通りに置換する方法

アイキャッチ




こんにちは、あんこ先生です。

文字列の一部を置換したいとき、なかなか思うようにできないことありませんか?

特定か所だけ変えたいのに他の部分も置換されたりするやつです。

そこで、今回は文字列を置換する関数を使っていろんなパターンに挑戦してみます。

使用頻度は高くありませんが、かゆいところに手が届く内容なのでぜひ読み進めてください。

いつもどおり、コードは極力コピペで動くようにしています。

今回学べること
  1. 位置が特定できる場合はReplace関数を使うこと
  2. 文字を特定できる場合はSubstitute関数を使うこと
  3. 他の文字を巻き込んでしまうときの回避方法

位置を特定して文字列を置換する方法│Replace


Replace関数

Replace関数は、元データに対して開始位置とそこからの長さ分を、指定した文字列に置換します。
対象は1か所のみで、必ず置換されます。

元データよりも長い位置を指定することで、文字列をつなげることもできます。

ただ、Concatenate関数か&でつなげた方が簡単です。

また、置換文字を””とすれば対象をそのまま除外することもできます。

記述例

Replace(元データ(文字列),”開始位置”,”長さ”,”置換文字”)
Replace(元データ(単一テーブル),”開始位置”,”長さ”,”置換文字”)

Label01.Textプロパティ

//文字列の7文字目から開始して4文字分を"Automate"に置換する
Replace(TextInput01.Text,7,4,"Automate")

//文字列の11文字目(最後尾)から開始して0文字分を" & Automate"に置換する
Replace(TextInput01.Text,11,0," & Automate")

元データは文字列だけでなく、単一項目テーブルも指定できます。

文字列-置換

文字を特定して文字列を置換する方法│Substitute


Substitute関数

Substitute関数は、元データに指定した文字列があるか照合して、一致すれば置換します。

パラメータで、一致したすべて、または指定した1か所のみ置換するかを選べます。

そ例外の複数置換には対応していませんし、そもそも対象がなければ置換されません。

また、置換文字を””とすれば対象をそのまま除外することもできます。

記述例

Substitute(元データ(文字列),”置換対象”,”置換文字”[,置換対象(数値)])
Substitute(元データ(単一テーブル),”置換対象”,”置換文字”[,置換対象(数値)])

Label01.Textプロパティ

//文字列"Apps"を"Automate"に置換する
Substitute(TextInput01.Text,"Apps","Automate")

//文字列"Apps"を"Apps & Automate"に置換する
Substitute(TextInput01.Text,"Apps","Apps & Automate")

こちらも、元データは文字列だけでなく、単一項目テーブルも指定できます。

スペースを除外する方法│Trim TrimEnds


Trim関数・TrimEnds関数

Trim関数なら、どこにスペースがちりばめられていても、単語間の1つだけを残してすべて削除できます。

TrimEnds関数は、元データの先頭と末尾にあるすべてのスペースを削除します。

こちらは単語間のスペースには何もしません。

なお、どちらも全角・半角の区別はなく、範囲内のすべてのスペースが対象です。

スペースの削除に限っては便利な関数ですね。

記述例

Trim(元データ(文字列))
Trim(元データ(単一テーブル))

Label01.Textプロパティ

//単語間のひとつ以外のスペースを除外
Trim(TextInput01.Text)

//文章前後のみのスペースを除外
TrimEnds(TextInput01.Text)

特定範囲に絞って置換する方法│Left Mid Right


位置関数の概要

Left関数は、元データの先頭から指定した長さ分を抜き取ります。

Mid関数は、元データに対して開始位置とそこから指定した長さ分を抜き取ります。

Righ関数は、元データの末尾から指定した長さ分を抜き取ります。

若干使いにくいですが、大抵Mid関数のみで対応できます。

Substitute関数は置換範囲を指定できませんが、これらの関数を組み合わせることで可能となります。

例えば対象”Power”が4つある文字列に対して、2つめと3つめを”Replace”に置換するといったこともできます。

Label01.Textプロパティ

//3番目の置換
Substitute(TextInput01.Text,"Power","Replace",3)

//2と3番目を置換
Left(TextInput01.Text,11)& //1単語目
Substitute(Mid(TextInput01.Text,12,20),"Power","Replace")& //2&3単語目
Mid(TextInput01.Text,32,99) //4単語目

まとめ

今回は、いろんなパターンの文字列の一部を置換してみました。

使い道としてはこのあたりでしょうか。

  • 年度を変える 2021➡2022
  • 商品名や担当者を変える
  • テーブルごと置換し、データソースを更新する

本当にたまにしか使いませんが、知っているとなにかと便利です。

使い方はアイデア次第!さっそくアプリに組み込んで動作させてみましょう!

アイキャッチ

ご支援よろしくおねがいします

この記事を気に入ってくださった方、寄付してあげてもいいよという方がいらっしゃっいましたら、ご支援いただけると助かります。

下記リンクからAmazonギフト券で、金額は15円からお気持ちを入力してください。

受取人のメールアドレスは amazon@anko7793.com までお願いします。

メッセージもいただけるとたいへん喜びます。

よろしくお願いします。

Amazonギフト券(Eメールタイプ) 



コメントを残す

メールアドレスが公開されることはありません。

ABOUT US
七草あんこ
非IT系中間管理職やってます。社命によりoffice365を主軸とした業務改善プロジェクトメンバーに任命されたことでPowerAppsと出会えました。いまではビジネス・プライベートを問わず、欠かせないツールになっています。導入初期やアプリ作成時に遭遇した諸問題の解決法とサンプルアプリの作り方を紹介していきます。主にTwitterで情報収集しているので不明点など呟いているとお邪魔するかもしれません。