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

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

2012年9月7日金曜日

文字列の検索(@Begins関数の場合)

昨日は、私用でお休みを頂きました。その関係で、ブログもお休みしました。
今日はその分、ちゃんと書きますよ。

では、本文に入る前にこちらのボタンをクリックしましょう。って、ホントに押してますか?押してくださいね。
にほんブログ村 IT技術ブログへ



今日は久しぶりに、@関数の話題です。

文字列の検索をする場合、@Leftや@Contains関数を使うことが多いと思いますが、"***"で始まっているかどうか?ということを調べるのであれば、@Begins関数が便利です。
ただ、この関数のヘルプ、おかしいんですよねぇ。翻訳が・・・

ということで、使ってない人が多いのではないでしょうか。

そこで、サンプルを元に解説して使い方を覚えてもらいましょう。

こんなフォームを用意しました。
サンプルフォーム画面

「検索したい文字列」(フィールド名:SearchString)には、「検索対象の文字列」が何で始まっているのかどうかを調べたい文字列を入力します。
「検索対象の文字列」(フィールド名:TargetString)には、検索される文字列を入力します。
つまり、
「検索したい文字列」の長さ<= 「検索対象の文字列」の長さ
ということになります。
ちなみに、それぞれ「複数値も可」にチェックが入れてあります。

[Begin関数による検査]というボタンの式は、以下のように記述しています。
ret := @If(@Begins(TargetString;SearchString);"指定した文字列で始まっています。";"指定した文字列では始まっていません。");

@SetField("SearchResult";ret)
SearchResultは、「結果」と書かれているところのフィールドです。

下図は、実際の実行結果です。
実行結果

このように、日本語でも正しく検査されることが分かります。

ここで、ヘルプを読むと、
1つ目のパラメータは「テキストまたはテキスト文字列。任意の文字列を指定します。」となっており、
2つ目のパラメータは「テキストまたはテキスト文字列。string の最初にあるかどうかを検索する文字列を指定します。」となっています。
テキストとかテキスト文字列って・・・おかしいですね。きっと翻訳誤りで、「文字列または、文字列リスト。」と言いたいのではないでしょうか?

その証拠に、使用法という箇所を見ると、「いずれかのパラメータがリストである場合、この関数は最初のパラメータの各要素に対して 2 番目のパラメータの各要素を検査し、一致している場合に 1 を返します。」 と書いてあります。
つまり、どちらのパラメータも文字列リストを許可しているはずです。

ということで、文字列リストについても試してみましょう。
下図は、検索対象を複数にしてみました。
実行結果2

この場合も、やはり結果は「xxxで始まっている」という事になりました。
指定した文字列が、検索対象の文字列のうち、どこか一つでも当てはまれば良いと言うことが言えます。


今度は、検索する文字列を複数にしてみました。
検索対象が1つなので、下手な鉄砲も数打ちゃ当たるといった感じでしょうか。
実行結果3

ということで、こちらも、やはり結果は「xxxで始まっている」という事になりました。
下手な鉄砲が当たったのですね。


では、それぞれを複数にしたらどうなるでしょう?
実行結果4

全部のパターンが当てはまらないといけないのかと思いきや、どこかの組み合わせで、「xxx」で始まっているのが見つかれば、「xxxで始まっている」ことになるんですね。

ちなみに、「検索したい文字列」を複数にした場合、どの検索したい文字列が合致したのかまでは面倒見てくれません。
そこまでチェックしたい場合は、「検索したい文字列」は複数を許可しない方が良いでしょう。
もしくは、[i]を使用して、リストの中を1つずつ検索するという風に式を改造する必要があります。

ということで、@Begins関数の使い方は分かっていただけたでしょうか。





【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
単純なDBのカスタマイズから他アプリケーションとの連携までご要望にお応えします
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

0 件のコメント: