0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

文字列の検証

ユーザーの入力を評価するうえで、活躍するPower Appsの関数は

上記が挙げられます。

文字列の入力、となるとユーザーの入力内容は千差万別であり、ある程度テキスト 入力コントロールで、制約をかけられても、より強固な制約をかけるためには関数の工夫が必要です。

これらの関数の活用においては

  • 通常文字
  • 事前定義済みパターン
  • 正規表現

という三つの活用オプションがあります。
正規表現となると、やや難解な印象を受けますので、通常文字事前定義済みパターンに焦点を当てて、活用方法を見ていきましょう。

通常文字

通常文字は、言葉のとおり「単語に一致しているか・していないか」を判断します。
活用例はIsMatch 関数が妥当だと思いますので、こちらを例に書いていきます。

Gatsuoという文字に対しGatsuoという文字がマッチしているか、このような観点では完全一致という観点でIsMatch 関数の検証がされます。

完全一致以外にもMatchOptionsを指定することで、完全一致以外のパターンも見ていくことができます。

このようなアプリを用意してみました。

image.png

赤枠rgba(255,0,0,1)で検証をしています。

image.png

検証する文字列
// 先頭の文字がGatsuo
GatsuoのロードShow

// 末尾の文字がGatsuo
ShowのGatsuo

// 完全一致
Gatsuo

// 大文字小文字が異なるGatsuo
gAtsUo

// 半角スペースが入ったGatsuo
 gats uo

// 複数行テキストのGatsuo

Gatsuo

// 複数行に文字がまたがるGatsuo

Ga
tsu
o

1. 先頭文字の一致

まずIsMatch 関数の書き方からご紹介します。

Text
IsMatch({検証する文字},{一致する文字},{オプション})

検証に使っている関数は下記のとおりです。

trueのケース
IsMatch(inpBeginsWithTrue.Value,"Gatsuo",MatchOptions.BeginsWith)
falseのケース
IsMatch(inpBeginsWithFalse.Value,"Gatsuo",MatchOptions.BeginsWith)

image.png

GatsuoのロードShowは先頭が一致しているためtrueを返し、ShowのGatsuoは異なるのでfalseを返しています。

2. 完全一致

MatchOptionsを省略すると、自動的にMatchOptions.Completeと解釈されます。

trueのケース
IsMatch(inpCompleteTrue.Value,"Gatsuo")
falseのケース
IsMatch(inpCompleteFalse.Value,"Gatsuo")

image.png

見てのとおり、完全一致のみtrueを返します。

3. 部分一致、文字列に含まれているか

文字列の中にGatsuoが含まれていればOKという場合、MatchOptions.Containsを使います。
先頭、末尾によくわからない文字やスペースが入っていても許容されるケースです。

trueのケース
IsMatch(inpContainsTrue.Value,"Gatsuo",MatchOptions.Contains)
falseのケース
IsMatch(inpContainsFalse.Value,"Gatsuo",MatchOptions.Contains)

image.png

部分一致というやつですね。使いどころがありますね。

4. 末尾の文字の一致

文字列の末尾にパターンが一致しているか、チェックする方式です。

trueのケース
IsMatch(inpEndsWithTrue.Value,"Gatsuo",MatchOptions.EndsWith)
falseのケース
IsMatch(inpEndsWithFalse.Value,"Gatsuo",MatchOptions.EndsWith)

image.png

5. 大文字小文字を無視

文字列が大文字であるか、小文字であるか、かかわらずMatchさせる場合は、MatchOptions.IgnoreCaseを使います。

trueのケース
IsMatch(inpIgnoreCaseTrue.Value,"Gatsuo",MatchOptions.IgnoreCase)
falseのケース
IsMatch(inpIgnoreCaseFalse.Value,"Gatsuo",MatchOptions.IgnoreCase)

6. 複数行テキスト

改行文字が含まれている場合でもマッチしているものを検出する際にMatchOptions.Multilineを使います。
文字列の中に、改行が含まれても良いということではないのでご注意ください!

trueのケース
IsMatch(inpMultilineTrue.Value,"Gatsuo",MatchOptions.Multiline)
falseのケース
IsMatch(inpMultilineFalse.Value,"Gatsuo",MatchOptions.Multiline)

image.png

ここから本番・・・と言いたいところですが!!

ここから自分の推しである事前定義済みパターンの紹介に移りたいところですが、冗長になるため、ここで一旦ブログを区切ります!

続きは次回をお楽しみに!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?