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

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

2014年3月4日火曜日

文字列の検索(StrRightBack)

皆さん、こんにちは。
3月になりました。ということは、今年はすでに6分の1を消化してしまったという事です。早いですね(笑)。
時間は万人平等に過ぎていくものなので、大切に過ごしましょう。


ということで?、本日の話題に入りますが・・・その前に
にほんブログ村 IT技術ブログへ
をクリックしてください。



さて、今日は久しぶりの文字列操作です。しかもLotusScriptです。XPagesを推進しなければいけないのに・・・

と言いつつ、先に進みます。
文字列操作の関数のうち、StrRightBackやStrLeftBack関数があります。
これらは、文字列を右側から検査していき、検査対象の文字(列)を発見したら、その文字の右側もしくは左側を取得するものです。

例えば、
c:\tmp\TestFolder\testdata.txt
という文字列があった場合、
StrRightBack( "c:\tmp\TestFolder\testdata.txt", "\" )
という関数を実行すると、その戻り値は
"testdata.txt"
 となります。

これは、フルパスを元にして、ファイル名だけを取得したい場合に利用できます。

ここで、ファイル名とそのファイルが格納されている直接のフォルダ名の両方を同時に取得したい!となった場合はどうすれば良いのでしょうか?

考えてみましょう・・・
左側から取得するのであれば、Instr関数で検査対象の文字を何回か調べていけば、x文字目からy文字目までを取得して、その後Mid関数で・・・という方法もあるのですが、
右側から取得するとなると、そうはいきません。

難しそうですね・・・
とここであきらめてはいけません。
実はStrRightBackやStrLeftBack関数等には、検査対象の文字が何回出てきたら、そこを基準とするというオプションがあるのです。

関数のヘルプをよく読むと、
occurrences 
Long。部分文字列を返す前に検索パターンが一致する数です。既定は 1 で、検索パターンが最初に一致した時点で部分文字列を返します。

という記述があります。

つまり、ここの数値を2や3にすれば、検査をその回数分、行ってくれるのです。
では、サンプルです。
Sub Click(Source As Button)
 Dim sData As String
 Dim ret   As String
 
 sData = "c:\tmp\TestFolder\testdata.txt"
 ret   = Strrightback( sData, "\",, 2 )
 
 Msgbox _
 "変換前:" & sData & Chr$(10) & _
 "変換後:" & ret, _
 0 + 64, "検索一致数の数を増やしてみる"
End Sub
StrRightBack関数の引数の4つ目が「occurrences」になります。
3つ目は検査対象の文字(列)の大文字小文字全角半角を区別する/しないの引数で、今回は
関係ないので、省略しています。


このサンプルの実行結果はこちら。

これなら簡単ですね。
文字列の検索を行うときはぜひ試してみてください。

応用とかもチャレンジしてみてください。


では、今日はこの辺で。






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

0 件のコメント: