当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。

テクてく Lotus 技術者 Slack に参加しよう!

2009年1月23日金曜日

入力された値が数値かどうか調べる

先ほど、ドミノ懇談室で、Re: 数値を指定するという記事を書いたが(あ。本名だよ。ま、いっか)、ちょっとこれの解説をしようと思う。

@Matches関数は、文字列が特定のパターンと一致するかどうかを調べる関数です。
ここでは、数字(0~9の文字と仮定します)以外はNGとするので、パターンは{0-9}となります。注意するのは、"{0-9}"と"で囲う点です。
また、文字列はtestフィールドなので、そのまま指定します。

とすると、
@Matches(test;"{0-9}")で、testフィールドの文字列が数字かどうかを判断できます。
しかし、サンプルを見ると、これだけで終わっていません。
どういうことか?
"{0-9}"というのは、1文字分なのです。
よって、
@Matches(test;"{0-9}")では、testフィールドに2文字以上入力されていたら全部NGになってしまうのです。
これでは困るので、今回の要件である「4文字以内」という所に着目して、サンプルの様に、"{0-9}"を1つの場合から4つの場合まで書いているのです。
これで、1文字、2文字、3文字もしくは4文字であればOKとなるわけです。



Rem {数字とは、0-9のいずれかを指すものとする。-(マイナス)や,(カンマ)、.(小数点)は含まない。};
str1 := @Matches(test;"{0-9}");
str2 := @Matches(test;"{0-9}{0-9}");
str3 := @Matches(test;"{0-9}{0-9}{0-9}");
str4 := @Matches(test;"{0-9}{0-9}{0-9}{0-9}");

@If(str1=1|str2=1|str3=1|str4=1;@Success;@Failure("4桁以内の数字を入力してください。"))


Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

0 件のコメント: