MovableType

1st 2nd 3rdのように数字に接尾語を付与する方法

第XXX回株主総会を英語で出力する場合に使える

英語のIRページぐらいしか用途が思いつきませんが、「1st」「2nd」「3rd」のように、数字に接尾語を付与するテンプレートを紹介します。

数字に接尾語を付与するルールは以下の様になっております。

st

一桁目が1の場合。例:1st, 21st, 301st

nd

一桁目が2の場合。例:2nd, 32nd, 302nd

rd

一桁目が3の場合。例:3rd, 43rd, 302rd

th

上記以外の場合、または、二桁目が1の場合。例:4th, 54th, 100th、11th, 112th, 2019th

サンプルテンプレート

MTSetVarTemplate タグ で作成した「includeSuffix」テンプレートの「number」に、接尾語を付与したい数字を代入します。

<mt:SetVarTemplate name="includeSuffix">
  <mt:SetVarBlock name="replace1">/^<mt:Var name="number" regex_replace="/.$/","">/</mt:SetVarBlock>
  <mt:SetVarBlock name="replace2">/^<mt:Var name="number" regex_replace="/..$/","">/</mt:SetVarBlock>
  <mt:Var name="number" regex_replace="$replace1","" setvar="Number1">
  <mt:Var name="number" regex_replace="$replace2","" setvar="Number2">

  <mt:SetVar name="undef(suffix)">
  <mt:SetVars>
    <mt:if name="Number2" le="19">
      <mt:if name="Number2" ge="11">suffix=th</mt:if>
    <mt:else>
      <mt:if name="Number1" eq="1">suffix=st</mt:if>
      <mt:if name="Number1" eq="2">suffix=nd</mt:if>
      <mt:if name="Number1" eq="3">suffix=rd</mt:if>
      <mt:if name="Number1" like="^(4|0)$">suffix=th</mt:if>
    </mt:if>
  </mt:SetVars>
<mt:Var name="number"><mt:Var name="suffix">
</mt:SetVarTemplate>

<mt:SetVar name="number" value="105">
<mt:Var name="includeSuffix" number="$number">

解説

MTSetVarTemplate タグ で作成した「includeSuffix」テンプレートの「number」に、接尾語を付与したい数字を代入します。

<mt:SetVar name="number" value="105">
<mt:Var name="includeSuffix" number="$number">

「includeSuffix」テンプレートにある、「number」に値が代入され、正規表現で、1桁目の数字が削除された変数「replace1」と、2桁目の数字が削除された変数「replace2」を作成します。

  <mt:SetVarBlock name="replace1">/^<mt:Var name="number" regex_replace="/.$/","">/</mt:SetVarBlock>
  <mt:SetVarBlock name="replace2">/^<mt:Var name="number" regex_replace="/..$/","">/</mt:SetVarBlock>

作成した変数で「number」に正規表現を行い、1桁目の数字が格納された変数「Number1」と、1桁目、2桁目の数字が格納された変数「Number2」を作成します。

  <mt:Var name="number" regex_replace="$replace1","" setvar="Number1">
  <mt:Var name="number" regex_replace="$replace2","" setvar="Number2">

後は、接尾語が表示される条件を、MTIF タグで作成し、MTSetVarsタグで作成した「suffix」に接尾語を代入していきます。

  <mt:SetVar name="undef(suffix)">
  <mt:SetVars>
    <mt:if name="Number2" le="19">
      <mt:if name="Number2" ge="11">suffix=th</mt:if>
    <mt:else>
      <mt:if name="Number1" eq="1">suffix=st</mt:if>
      <mt:if name="Number1" eq="2">suffix=nd</mt:if>
      <mt:if name="Number1" eq="3">suffix=rd</mt:if>
      <mt:if name="Number1" like="^(4|0)$">suffix=th</mt:if>
    </mt:if>
  </mt:SetVars>

最後に変数をMTVar タグでそれぞれ出力すると、接尾語の付与された数字を出力することができます。