FormIO 入力書式−概要

 入力書式は、日常生活で一般的に使用されるものは大体サポートされています。
 このドキュメントはユーザーズマニュアルですので、入力書式の仕様も一応記載しますが(エクセル5では入力書式の記載は全くありません)、この関数を使用してプログラムを書くユーザーも、さらにそのプログラムを使用するエンドユーザーも、特に入力書式を意識する必要はないでしょう。 FormIOは、入力された文字列を、まず「数値」として評価しようとします。
 「数値」のなかでも、まず数学的書式の「通常数値」として評価しようとし、それが駄目な場合には、「日付時刻」として評価し「シリアル値」を得ようとします。これらが全て駄目な場合のみ、そのまま文字列として評価します。 「数値」として評価する場合には、全角・半角、英大文字・小文字の区別はしません。また、元の文字列に対して以下の加工をします。
    <1> 「通常数値」として評価する場合は千単位区切り文字
      (通常はカンマと読点)を無視する
    <2> 時刻区切り文字(通常はコロン)前後の空白と
      「英数字−英数字間」の空白以外の空白は無視する
 なお、特に縦書きの場合を考慮して、(新字・旧字とも)漢数字も数字として入力できますが、単位を表す漢数字(十・拾・百・千・阡・万・萬・億・兆)は使用できません。
 <1>は「12,345」でも「12345」でも同じに扱うということです。また、通常そのような入力はしませんが「,1,,2,,,345,,,」といった入力でも構いません。エクセル5でも概ね同様ですが、妙な制約があります(詳細は省略)。
 <2>は簡単にいえば「無意味な空白は無視する」ということなのですが「何が無意味か」を表現するとこのようになります。以下に例をあげておきます。
    <a> 「 12 345 6 789 」 ≠ 「123456789」
    <b> 「  94 - 8 - 25 」 = 「94-8-25」
    <c> 「 0: 1: 2」 ≠ 「0:1:2」
    <d> 「25 AUG PM 6」 = 「25AUG PM6」
    <e> 「25 AUG PM 6」 ≠ 「25AUGPM6」
    <f> 「25 AUG 6 PM」 = 「25AUG 6PM」
    <g> 「25 AUG 6 PM」 ≠ 「25AUG6PM」
 一見<c>は「=」でもいいのでは? と思えますが、時刻はコロンで終了してもOKとするため(エクセル5互換)「1:23:8-25」のような場合「1:23:8-25」と同一視すると問題が発生します。
 もっとも、日付は0埋めの「94-08-25」といった書式と同様に、空白埋めの「94-8-25」といった書式もよく利用されますが、時刻は<c>のような例は両辺とも一般的ではなく「00:01:02」といった書式が一般的ですから、<c>が「≠」でも支障はないはずです(ただし右辺のような入力も正しく評価されます)。
 <d>〜<f>については若干の説明が必要です。「英数字−英数字間」の空白は「無視されない」わけですから、「25」と「AUG」の間や「PM」と「6」の間も「無視されない」はずです。実際処理の第1段階では無視されません。<d><f>の右辺のように評価されるのは、内部的に「日付」と「時刻」が分離されてからのことです。分離後には「英数字−英数字間」ではなく、「英字−英字間」と「数字−数字間」の空白のみ「有意な空白」とみなされ、それ以外の空白は無視されます。

※参照(入力書式)