🧵

全角・半角の文字数を数えるには?

属性名
全角のみ文字数、半角のみ文字数
返り値
Integer
逆引きNotionDB
関連するもの
Yuka さんのメンバーシップ内の notion フォーラムにて、「Notionのフォーミュラで、半角か全角かを判断するってできると思いますか?」という質問がありました。詳しく聞いてみると、全角・半角の文字数を別々にカウントしたいとのことでした。ちょっと考えて、半角文字だけ消してしまえれば、全角の文字数が数えられるなと思ったので、早速作ってみました。
 
  1. 文字数(全半無視): 全角も半角も1文字は1文字になる
    1. length(prop("Name"))
  1. 全角のみ文字数: ASCII 文字を replaceAll で消してしまい、全角文字数だけをカウントします。正規表現は以下のことに注意しました
    1. 「-」は範囲を示すので、一番先頭に記述します
    2. 「"」は文字列の終わりを示すので、「\"」としてエスケープします
    3. 同様に「[」「]」は正規表現の始まりと終わりを示すので、「\[」「\]」としてエスケープします。ただし、一度編集してもう一度開くとなぜか「\\[」「\\]」になってしまうので、修正するときは再度戻す必要があります。
    4. 「\」はエスケープのための文字なので「\\」でエスケープしました
    5. 改行も半角としてカウントしてほしいとのことだったので、「\n」として半角文字としました。
    6. length(replaceAll(prop("Name"), "[- !\"#$%&'()*+,./0-9:;<=>?@A-Z^_`a-z{|}~\n\[\]\\]", ""))
  1. 半角のみ文字数: 1 から 2 を引き算しました。
    1. prop("文字数(全半無視)") - prop("全角のみ文字数")
       
試した結果を下に示します。うまく判別できているようです。
全角・半角文字数
Name
文字数(全半無視)
全角のみ文字数
半角のみ文字数