次の方法で共有


EndsWith 関数と StartsWith 関数

適用対象: キャンバス アプリ デスクトップ フロー Dataverse 数式列 モデル駆動アプリ Power Pages Power Platform CLI

あるテキスト文字列が、別のテキスト文字列で始まっているか、または終わっているかをテストします。

内容

EndsWith 関数は、あるテキスト文字列が別のテキスト文字列で終わるかどうかをテストします。

StartsWith 関数は、あるテキスト文字列が別のテキスト文字列で始まるかどうかをテストします。

どちらの関数でも、バックエンド データソースが既定でサポートしている場合、テストでは大文字と小文字が区別されません。 たとえば、コレクション、Dataverse、SharePoint、SQL Serverは、既定で大文字と小文字を区別しないようになっています。 オラクルはそうではありません。 どちらの戻り値もブール値 true または false です。

アプリ内でデータを検索するには、Filter 関数と共に EndsWith および StartsWith を使用します。 また、in 演算子または Search 関数を使用すると、先頭や末尾だけでなく、テキスト文字列の中も検索できます。 アプリのニーズや特定のデータ ソースで、委任 できる関数に応じて、関数を選ぶことができます。 これらの関数のいずれかを委任できない場合は、作成時にこの制限に関して警告する委任に関する警告画面が表示されます。

構文

EndsWith(Text, EndText)

  • Text – 必須。 テストするテキスト。
  • EndText - 必須。 Text の末尾の検索に使用するテキスト。 EndText が空の文字列の場合、EndsWithtrue を返します。

StartsWith( Text, StartText )

  • Text – 必須。 テストするテキスト。
  • StartText - 必須。 Text の先頭で検索するテキスト。 StartText が空の文字列の場合、StartsWithtrue を返します。

計算式 内容 結果
EndsWith("Hello World", "world") "Hello World""world" で終わるかどうかを調べます。 このテストでは、大文字と小文字が区別されません。 True
EndsWith("Good bye", "good") "Good bye""good" で終わるかどうかをテストします。 EndText の引数 ("good") は、テキストの中に表れますが、末尾にはありません。 false
EndsWith("Always say hello", "hello") "Always say hello""hello" で終わるかどうかをテストします。 True
Endswith("Bye bye", "") "Bye bye" が、空のテキスト文字列 (Len は 0 を返します) で終わるかどうかをテストします。 Filter 式を使用して条件を緩和している場合、EndsWith は、ここでは true を返すように定義されます。 True
計算式 内容 結果
StartsWith( "Hello World", "hello" ) "Hello World""hello" で始まるかどうかをテストします。 このテストでは、大文字と小文字が区別されません。 True
StartsWith( "Good bye", "hello" ) "Good bye""hello" で始まるかどうかをテストします。 false
StartsWith( "Always say hello", "hello" ) "Always say hello""hello" で始まるかどうかをテストします。 "hello" はテキスト内に出現しますが、先頭にはありません。 false
StartsWith("Bye bye", "") "Bye bye" が、空のテキスト文字列 (Len は 0 を返します) で始まるかどうかをテストします。 Filter 式を使用して条件を緩和している場合、StartsWith は、ここでは true を返すように定義されます。 True

検索のユーザー エクスペリエンス

多くのアプリでは、検索ボックスに 1 つ以上の文字を入力して、大きなデータ セット内のレコードの一覧をフィルター処理することができます。 入力すると、一覧には、検索条件に一致するレコードのみが表示されます。

このトピックの残りの部分にある例では、次のデータを含む Customers という一覧を検索した場合の結果を示しています。

顧客リストの例。

このデータ ソースをコレクションとして作成するには、Button コントロールを作成し、その OnSelect プロパティを次の数式に設定します。

ClearCollect( Customers, Table( { Name: "Fred Garcia", Company: "Northwind Traders" }, { Name: "Cole Miller", Company: "Contoso" }, { Name: "Glenda Johnson", Company: "Contoso" }, { Name: "Mike Collins", Company: "Adventure Works" }, { Name: "Colleen Jones", Company: "Adventure Works" } ) )

この例に示すように、画面下部にあるギャラリー コントロールにレコードの一覧を表示できます。 画面の上部には、ユーザーが関心のあるレコードを指定できるように、SearchInput という名前のText input コントロールを追加できます。

顧客ギャラリー。

ユーザーが SearchInput に文字を入力すると、ギャラリーの結果は自動的にフィルター処理されます。 この場合、ギャラリーは、(会社の名前ではなく) 顧客の名前が SearchInput の文字シーケンスで始まるレコードを表示するように構成されています。ユーザーが検索ボックスに co と入力した場合、ギャラリーには次の結果が表示されます。

検索付きの顧客ギャラリー。

Name 列に基づいてフィルター処理するには、ギャラリー コントロールの Items プロパティを次の数式のいずれかに設定します。

計算式 内容 結果
Filter( Customers, StartsWith( Name, SearchInput.Text ) ) Customers データ ソースで、検索文字列が Name 列の先頭に出現するレコードをフィルター処理します。 このテストでは、大文字と小文字が区別されません。 ユーザーが検索ボックスに co と入力した場合、ギャラリーには、Colleen JonesCole Miller が表示されます。 ギャラリーに Mike Collins が表示されないのは、そのレコードの Name 列の先頭に検索文字列がないためです。 StartsWith の例。
Filter( Customers, SearchInput.Text in Name ) Customers データ ソースで、検索文字列が Name 列のどこかに出現するレコードをフィルター処理します。 このテストでは、大文字と小文字が区別されません。 ユーザーが検索ボックスに co と入力した場合、ギャラリーには、Colleen Jones、Cole Miller、Mike Collins が表示されます。これは、検索文字列が、これらすべてのレコードの Name 列のどこかに出現しているためです。 名前の SearchInput.Text の例。
Search( Customers, SearchInput.Text, "Name" ) in 演算子を使用した場合と同様、Search 関数は、各レコードの Name 列内で一致を検索します。 列名を二重引用符で囲む必要があることに注意してください。 名前付きの SearchInput.Text の例。

Name 列だけでなく Company 列を含めるように検索範囲を広げることができます。

計算式 内容 結果
Filter( Customers, StartsWith( Name, SearchInput.Text ) || StartsWith( Company, SearchInput.Text ) ) Customers データ ソースで、Name 列または Company 列の先頭に検索文字列 (たとえば、co) があるレコードをフィルター処理します。 どちらか一方の StartsWith 関数が true の場合、|| 演算子true になります。 StartsWith でのフィルタリング。
Filter( Customers, SearchInput.Text in Name || SearchInput.Text in Company ) Customers データ ソースで、Name 列または Company 列の中に検索文字列 (たとえば、co) が含まれているレコードをフィルター処理します。 名前に検索テキストを使用してフィルタリングします。
Search( Customers, SearchInput.Text, "Name", "Company" ) in 演算子を使用した場合と同様、Search 関数は、Customers データ ソースで、Name 列または Company 列の中に検索文字列 (たとえば、co) が含まれているレコードを検索します。 複数の列と複数の in 演算子を指定する場合は、Filter よりも Search 関数の方が読み書きが簡単です。 列の名前を二重引用符で囲む必要があることに注意してください。 名前、会社に検索テキストを使用してフィルタリングします。