文字列の検証
ユーザーの入力を評価するうえで、活躍するPower Apps
の関数は
上記が挙げられます。
文字列の入力、となるとユーザーの入力内容は千差万別であり、ある程度テキスト 入力
コントロールで、制約をかけられても、より強固な制約をかけるためには関数の工夫が必要です。
これらの関数の活用においては
- 通常文字
- 事前定義済みパターン
- 正規表現
という三つの活用オプションがあります。
正規表現
となると、やや難解な印象を受けますので、通常文字
と事前定義済みパターン
に焦点を当てて、活用方法を見ていきましょう。
通常文字
通常文字は、言葉のとおり「単語に一致しているか・していないか」を判断します。
活用例はIsMatch 関数が妥当だと思いますので、こちらを例に書いていきます。
Gatsuo
という文字に対しGatsuo
という文字がマッチしているか、このような観点では完全一致
という観点でIsMatch 関数の検証がされます。
完全一致以外にもMatchOptionsを指定することで、完全一致
以外のパターンも見ていくことができます。
例
このようなアプリを用意してみました。
赤枠rgba(255,0,0,1)
で検証をしています。
// 先頭の文字がGatsuo
GatsuoのロードShow
// 末尾の文字がGatsuo
ShowのGatsuo
// 完全一致
Gatsuo
// 大文字小文字が異なるGatsuo
gAtsUo
// 半角スペースが入ったGatsuo
gats uo
// 複数行テキストのGatsuo
Gatsuo
// 複数行に文字がまたがるGatsuo
Ga
tsu
o
1. 先頭文字の一致
まずIsMatch 関数の書き方からご紹介します。
IsMatch({検証する文字},{一致する文字},{オプション})
検証に使っている関数は下記のとおりです。
IsMatch(inpBeginsWithTrue.Value,"Gatsuo",MatchOptions.BeginsWith)
IsMatch(inpBeginsWithFalse.Value,"Gatsuo",MatchOptions.BeginsWith)
GatsuoのロードShow
は先頭が一致しているためtrue
を返し、ShowのGatsuo
は異なるのでfalse
を返しています。
2. 完全一致
MatchOptions
を省略すると、自動的にMatchOptions.Complete
と解釈されます。
IsMatch(inpCompleteTrue.Value,"Gatsuo")
IsMatch(inpCompleteFalse.Value,"Gatsuo")
見てのとおり、完全一致
のみtrue
を返します。
3. 部分一致、文字列に含まれているか
文字列の中にGatsuo
が含まれていればOKという場合、MatchOptions.Contains
を使います。
先頭、末尾によくわからない文字やスペースが入っていても許容されるケースです。
IsMatch(inpContainsTrue.Value,"Gatsuo",MatchOptions.Contains)
IsMatch(inpContainsFalse.Value,"Gatsuo",MatchOptions.Contains)
部分一致
というやつですね。使いどころがありますね。
4. 末尾の文字の一致
文字列の末尾にパターンが一致しているか、チェックする方式です。
IsMatch(inpEndsWithTrue.Value,"Gatsuo",MatchOptions.EndsWith)
IsMatch(inpEndsWithFalse.Value,"Gatsuo",MatchOptions.EndsWith)
5. 大文字小文字を無視
文字列が大文字であるか、小文字であるか、かかわらずMatchさせる場合は、MatchOptions.IgnoreCase
を使います。
IsMatch(inpIgnoreCaseTrue.Value,"Gatsuo",MatchOptions.IgnoreCase)
IsMatch(inpIgnoreCaseFalse.Value,"Gatsuo",MatchOptions.IgnoreCase)
6. 複数行テキスト
改行文字が含まれている場合でもマッチしているものを検出する際にMatchOptions.Multiline
を使います。
文字列の中に、改行が含まれても良いということではないのでご注意ください!
IsMatch(inpMultilineTrue.Value,"Gatsuo",MatchOptions.Multiline)
IsMatch(inpMultilineFalse.Value,"Gatsuo",MatchOptions.Multiline)
ここから本番・・・と言いたいところですが!!
ここから自分の推しである事前定義済みパターン
の紹介に移りたいところですが、冗長になるため、ここで一旦ブログを区切ります!
続きは次回をお楽しみに!