逆引きFormula に戻る

Yuka さんのメンバーシップ内の notion フォーラムにて、「Notionのフォーミュラで、半角か全角かを判断するってできると思いますか?」という質問がありました。詳しく聞いてみると、全角・半角の文字数を別々にカウントしたいとのことでした。ちょっと考えて、半角文字だけ消してしまえれば、全角の文字数が数えられるなと思ったので、早速作ってみました。

  1. 文字数(全半無視): 全角も半角も1文字は1文字になる

    length(prop("Name"))
    
  2. 全角のみ文字数: ASCII 文字を replaceAll で消してしまい、全角文字数だけをカウントします。正規表現は以下のことに注意しました

    1. 「-」は範囲を示すので、一番先頭に記述します
    2. 「"」は文字列の終わりを示すので、「\"」としてエスケープします
    3. 同様に「[」「]」は正規表現の始まりと終わりを示すので、「\[」「\]」としてエスケープします。ただし、一度編集してもう一度開くとなぜか「\\[」「\\]」になってしまうので、修正するときは再度戻す必要があります。
    4. 「\」はエスケープのための文字なので「\\」でエスケープしました
    5. 改行も半角としてカウントしてほしいとのことだったので、「\n」として半角文字としました。
    length(replaceAll(prop("Name"), "[- !\\"#$%&'()*+,./0-9:;<=>?@A-Z^_`a-z{|}~\\n\\[\\]\\\\]", ""))
    
  3. 半角のみ文字数: 1 から 2 を引き算しました。

    prop("文字数(全半無視)") - prop("全角のみ文字数")
    

試した結果を下に示します。うまく判別できているようです。

無題