関数索引
unsplit() 関数は、配列になっている文字列を結合してひとつの文字列を生成する時に使用します。split() 関数を使って単語に分解した文字列を、再度結合する場合などに使用します。
結合したい文字列が格納されている配列を与えます。split() 関数の戻り値や wr-variable で宣言した変数に文字列を append したものを与えます。
「繰り返しあり」の指定のある1行文字列や複数行の文字列の要素も与えることができます。
unsplit() 関数は「配列」に指定された配列に含まれている値を、可能なかぎり文字列に変換して先頭から順次連接をつくり(繋げてゆき)ひとつの長い文字列を生成します。この連接を作る時に、連接する文字列と文字列の間に挟む文字列を指定します。この結合文字列は、例えば、長さ3の配列に置かれている3つの単語を接続する場合に、単語1と単語2の間、単語2と単語3の間に挟み込まれます。
なにも挟む必要がない場合には "" (空文字列)を指定してください。
"a" という変数を wr-variable を使って宣言します。そこに、定数 123 "abc" "あいう" を append します。a は長さ 3 の配列になります。 この配列に入れられた3つの値を "|" 記号を挟んで連接してみます。
<body>
......
<wr-variable name="a"/>
<wr-append name="a" value="123"/>
<wr-append name="a" value="\"abc\""/>
<wr-append name="a" value="\"あいう\""/>
%unsplit(a, "|")%
.....
</body>
展開結果は「123|abc|あいう」になります。
「強調表示」という要素に、カンマで区切られた、強調表示したい単語が入力されているとします。また「本文」という要素には、その強調表示したい単語を含む文章が入力されているとします。
下記のような展開を記述することで、本文中の目的の単語を赤色表示することができます。
<body>
%replaceAll(本文,
concatenate("(", unsplit(split(強調表示, "\s*,\s*"), "|"), ")"),
"<span style=\"color: red;\">$1</span>")%
....
</body>
replaceAll() 関数に渡す引数のパターンを split() 関数と unsplit() 関数と concatenate() 関数で組み立てています。
(1) カンマで区切られて入力されている単語を「強調表示」という要素の値から split() 関数で抽出します。
(2) それに、unsplit() 関数を使って正規表現の OR を表す "|" 記号で連接します。
(3) 最後に concatenate() 関数を使って前後に "(" と ")" を付けて先方参照可能な正規表現に仕立て上げます。
(4) replaceAll() 関数で、パターンに該当する部分の前後に span タグを埋め込み赤色表示を実現しています。
「本文」に「お使いのWebReleaseのVersionは?」という文章が入力されていて、また、「強調表示」には「WebRelease , Version」と入力されていたならば、展開結果は下記のようになるでしょう。
お使いの<span style="color: red;">WebRelease</span>の<span style="color: red;">Version</span>は?