LotusScriptでJavaを利用するLS2J
LotusScriptには、Javaクラスを操作する為の「LS2J」という仕組みがあります。これを利用すると、LotusScriptの中で部分的に、Javaを簡単に利用することができます。
今回は正規表現による文字列の置換を例に、使い方をご紹介します。
サンプルコード
'「height="16"」の数値部分を「32」に置換する
Option Public
Option Declare
UseLSX "*javacon"
Sub Initialize
Dim regEx As String
Dim strRep As String
Const strText = |height="16"|
regex = |\d\d|
strRep = |32|
MsgBox ReplaceStr(strText, regEx, strRep)
End Sub
Function ReplaceStr(strText As String , regEx As String, strRep As String) As String
Dim js As JavaSession
Dim jc As JavaClass
Dim pattern As JavaObject
Dim matcher As JavaObject
Set js = New JavaSession
Set jc = js.GetClass("java.util.regex.Pattern")
Set pattern = jc.compile(regEx)
Set matcher = pattern.matcher(strText)
ReplaceStr = matcher.replaceAll(strRep)
End Function
プログラムの解説
まず、LS2Jを利用する為に、「UseLSX "*javacon"」を記載します。
※「(Options)」に記載するとよいでしょう。
続いて、Javaの記述です。「LS2J」にはJavaを利用する為のいくつかのクラスが用意されています。主要なものは、以下のとおりです。
・JavaSession :Java用のセッション
・JavaClass :Javaのクラスオブジェクト
・JavaObject :Javaオブジェクトのインスタンス
あとは、これらを利用してJavaを記載するだけです。
スクリプトライブラリを利用する場合
Javaのスクリプトライブラリに、クラスや関数を作成して利用することが可能です。先程の文字列の置換を処理を例に、使い方をご紹介します。
まず、Javaのスクリプトライブラリを準備します。
ここではスクリプトライブラリ名を「TestJava」としています。
import java.util.regex.*;
public class orgStrClass {
public String ReplaceStr(String strText, String regEx, String strRep) {
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(strText);
return m.replaceAll(strRep);
}
}
LotusScriptのエージェント
Option Public
Option Declare
Use "TestJava"
UseLSX "*javacon"
Sub Initialize
Dim regEx As String
Dim strRep As String
Const strText = |height="16"|
regex = |\d\d|
strRep = |32|
Dim js As JavaSession
Dim jc As JavaClass
Dim jobj As JavaObject
Set js = New JavaSession
Set jc = js.GetClass("orgStrClass")
Set jObj = jc.CreateObject
MsgBox jObj.ReplaceStr(strText, regEx, strRep)
End Sub
先程のプログラムとの違いは、まず「Use "TestJava"」でスクリプトライブラリを読み込んでいます。また、「orgStrClass」クラスのオブジェクトを取得後、そのインスタンスをJavaObjectクラスで取得し、「ReplaceStr」関数を実行ます。
注意点
Nomad Mobile、Nomad Webについては、制限によりLS2Jを利用することはできません。※これは2023年8月時点の情報です。バージョンアップにより改善される可能性がある為、詳細はHCL社の公式サイトの情報をご確認ください。