<img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=211808849452561&amp;ev=PageView&amp;noscript=1">

HubSpotの基本的な使い方から現場ベースのナレッジまで、HubSpotに特化して情報をご提供します。
どんどんコンテンツを追加していきますので、ご期待ください!

  1. Penseesトップ
  2. How to HubSpot
  3. HubLで文字列内の単語の出現回数をカウントする
CMS

HubLで文字列内の単語の出現回数をカウントする

例えば「hogeふがピヨhogehogeふが」の文字列において、hogeが何回出て来るか?をカウントする方法です。自分の知る限りHubLにはこれを一発で処理できる関数やフィルタはないので、少し工夫することになります。

発想としては「hogeの度に何かができれば良さそう」なので、splitフィルタを使います。一旦シンプルな例でいくと、「ふがhogeピヨ」に対してsplitフィルタを使用した場合、次のようになりhogeの出現回数を取得できます。

{%- raw -%}
{{ 'ふがhogeピヨ'|split('hoge')|length - 1 }}
↓
1(hogeの出現回数)

分解して解説すると、まず 'ふがhogeピヨ'|split('hoge')['ふが', 'ぴよ'] のリストができます。このリストのlengthから-1した値が、hogeの出現回数になります。

ただし厄介なのが最初の例で「hogeふがピヨhogehogeふが」に対し |split('hoge') すると、得られるリストは [ふがピヨ, ふが] になります。このリストのlength - 1は1なので、これはhogeの出現回数ではありません。要は行頭・行末の区切り文字や、連続する区切り文字があると期待通りの結果を得られないのです。

ではどうするかというと、先に区切り文字に何か適当な文字を付加しておきます。そのうえでsplitを行うと、期待通りの結果が得られます。

{{ 'hogeふがピヨhogehogeふが'|replace('hoge', '@hoge')|split('hoge')|length - 1 }}
↓
3(hogeの出現回数)

そもそもHubLでこういう文字処理などしだすこと自体辛さがあるのですが、かといってしないと先に進めないこともありますので、ご参考までに。
ちなみに配列であれば、count関数が使え、「単に文字列中に特定の単語を含むかどうか」であれば、string_containingが使えます。

{% endraw %}

MAIL NOTIFY

パンセへのご相談はこちら

HubSpotお役立ち情報 コツや使い方をご紹介します!

POST SEARCH

    RECOMMEND

    CATEGORY