あるテキスト文字列が別のテキスト文字列の先頭にあるかどうかをテストします。

説明

StartsWith 関数は、あるテキスト文字列が別のテキスト文字列で始まるかどうかをテストします。 このテストでは、大文字と小文字が区別されません。 戻り値は、ブール値の true または false です。

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

構文

StartsWith( Text, StartText )

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

数式 説明 結果
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

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

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

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

このデータ ソースをコレクションとして作成するには、ボタン コントロールを作成し、その 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 という名前のテキスト入力コントロールを追加できます。

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

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

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

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

数式 説明 結果
Filter( Customers, StartsWith( Name, SearchInput.Text ) || StartsWith( Company, SearchInput.Text ) ) Customers データ ソースで、Name 列または Company 列の先頭に検索文字列 (たとえば、co) があるレコードをフィルター処理します。 どちらか一方の StartsWith 関数が true の場合、|| 演算子true になります。
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関数の方が読み書きが簡単です。 列の名前を二重引用符で囲む必要があることに注意してください。