文字列を1文字ずつ出力するプラグイン(その2)

昨日は「文字列を1文字ずつ出力するプラグイン(その1)文字列を1文字ずつ出力するプラグイン」を紹介しました。
今日はその続きで、分割した文字を置換する機能を紹介します。

1.置換が必要な場合

Blogの総エントリー数を6桁で表示するものとし、空の桁はスペースにしたいとします。
例えば、総エントリー数が123だとすると、「□□□123」(□はスペース)のようにします。
<$MTBlogEntryCount sprintf="%6d"$>のようにすれば、上のことを行うことができます。

ここで、この6桁の数値を画像で表示したいとします。
SplitStringプラグインで単純に1文字ずつに切って、文字の後に「.gif」をつけるとすると、スペースは「□.gif」に変換されることになります(□はスペース)。
しかし、「□.gif」というファイル名は、つけられなくはないですが、扱いにくいです。
そこで、数字はそのまま出力して、スペースは「space」などの文字列に置換したい、というようなことがでてきます。

2.置換の方法

上記のように、特定の文字を置換して出力したい場合は、MTSplitStringタグに「replace」または「regex」のアトリビュートを追加します。

ある文字を単純に他の文字に置換するだけなら、「replace="置換元,置換先"」のように書きます。
例えば、スペースを「space」に置換する場合だと、「replace=" space"」のように書きます。
置換したい文字が複数ある場合は、「replace1="置換元1,置換先1"」のように、「replace」の後に番号をつけて、置換方法を順に指定します。

また、正規表現で置換方法を指定するなら、「regex="正規表現"」のように書きます。
例えば、「regex="s/ /space/"」と指定すると、スペースを「space」に変換することができます。

3.例

昨日の例で、空の桁に「0」を表示するのではなく、スペースの画像を入れたいとします。
また、スペースの画像には「space.gif」というファイル名をつけているとします。
その場合は、以下のように書けばよいことになります。

<MTSetVarBlock name="blogcount"><MTBlogEntryCount sprintf="%6d"></MTSetVarBlock>
<MTSplitString name="blogcount" replace=" ,space"><img src="<$MTBlogURL$>counter/<MTSplitStringChar>.gif" alt="<$MTSplitStringChar$>" /></MTSplitString>