
Power Appsには文字列を置換する関数が2つあります。ReplaceとSubstituteです。結論から言うと、ほぼSubstituteを使えば問題ありません。Replaceが必要になるケースは限定的です。この記事ではその違いと使い分けを整理します。

Replaceの仕組みと使いどころ
Replaceは、文字列の特定の位置から指定した文字数を別の文字列に置き換える関数です。引数は4つあります。
Replace(テキスト, 開始位置, 文字数, 置換後の文字列)
たとえば「ABCDE」の2文字目から3文字分を「XYZ」に置き換える場合、次のように書きます。
Replace("ABCDE", 2, 3, "XYZ")
// 結果:AXYZЕ
位置番号で指定するため、対象の文字列が変わると意図しない箇所を置き換えてしまうリスクがあります。データが固定長のコードや番号でなければ、Replaceは扱いにくい関数です。私の現場では、郵便番号のハイフンをなくす処理など、文字の位置が必ず決まっているときにしか使いません。

Substituteの仕組みと使いどころ
Substituteは、文字列の中から特定の文字列を検索して別の文字列に置き換える関数です。位置指定ではなく、文字列を直接指定します。
Substitute(テキスト, 検索する文字列, 置換後の文字列 [, インスタンス番号])
たとえば「Power Apps Tips」の「Tips」を「ガイド」に置き換えるには次のように書きます。
Substitute("Power Apps Tips", "Tips", "ガイド")
// 結果:Power Apps ガイド
対象の文字列が何文字目にあるかを気にしなくていいため、動的なデータへの適用に強いです。SharePointリストのデータでも、テキスト入力の値でも、同じ書き方で対応できます。

ReplaceとSubstituteの比較
| Replace | Substitute | |
|---|---|---|
| 指定方法 | 開始位置と文字数 | 置き換えたい文字列 |
| 動的データへの対応 | 弱い(位置が変わると壊れる) | 強い(文字列を検索して置換) |
| 複数箇所の置換 | 1箇所のみ | 全箇所またはn番目を指定可能 |
| 向いているケース | 固定長コード・番号の特定位置 | ほぼすべての置換ケース |
Substituteの第4引数にインスタンス番号を指定すると、同じ文字列が複数ある場合でもn番目だけを置換できます。たとえば「AAA」の2番目の「A」だけを「B」にするといった使い方です。
Substitute("AAA", "A", "B", 2)
// 結果:ABA
実例3パターン
文字列の単語置換(Substitute)
テキスト入力で入力された文章の中から、特定の単語を別の表現に統一する場面です。たとえば入力フォームに「お客様」と「顧客」が混在している場合、Substituteで一方に統一できます。
Substitute(TextInput1.Text, "顧客", "お客様")
Patchで保存する直前にこの処理を噛ませておくと、SharePointリストのデータを統一した表記で管理できます。Patchの使い方はこちらの記事で解説しています。
位置指定置換の動作確認(Replace)
たとえば社員コードが必ず8文字固定で、3文字目と4文字目が部署コードになっている場合、その部分だけをReplaceで書き換えることができます。
Replace(TextInput_EmpCode.Text, 3, 2, "01")
このようにデータの構造が完全に固定されていない限り、Replaceは使わないほうが安全です。
特殊文字の標準化(Substitute)
SharePointリストの全角スペースと半角スペースが混在しているデータを、半角スペースに統一する処理もSubstituteで対応できます。
Substitute(ThisItem.氏名, " ", " ")
SharePointのデータ操作についてはSharePointリストのCRUDパターンも参考にしてください。

まとめ:迷ったらSubstitute
ReplaceとSubstituteの使い分けは、一言で言えば迷ったらSubstituteです。Replaceが活きるのは、データの文字位置が完全に固定されていると保証できるケースに限ります。それ以外はSubstituteを選んでおくほうが、データが変化しても壊れにくいアプリになります。
スペースの除去にはTrimやTrimEndsが適しています。TrimとSubstituteを組み合わせて使う場面も多いので、あわせて覚えておくと便利です。TrimとTrimEndsの使い方はこちらの記事で紹介しています。
Power Appsのその他のテキスト関数についての完全ガイドはこちらの記事をご覧ください。
少し地味な関数ですが、データ整形の場面で頼りになります。積極的に使っていきましょう。