---
title: HubLの変数と文字列の結合を楽に行う
description: HubLで変数と文字列の結合をするとき、通常はクォーテーションと変数を切り替えて文字列を結合すると思います。JavaScriptでいえば、いわゆるES5的な方法ですね。しかしいかんせんこの結合方法はめんどくさいと思います。本記事では、楽に結合できる方法を2つご紹介します。
---

HubLの変数と文字列の結合を楽に行う

# HubLの変数と文字列の結合を楽に行う

[半田 惇志](https://demo.100inc.co.jp/category-test/author/半田-惇志)  Jun 25, 2019, 12:00:00 AM

HubLで変数と文字列の結合をするとき、通常は次のコードのように行うと思います。JavaScriptでいえば、いわゆるES5的な方法ですね。例えば今回は複数の変数を使用して、1つのclass属性値を作りたいとしましょう。コードの可読性のために、class属性内でhogeやfugaを展開するのはではなく、予めclass属性値を1つの変数にまとめる形とします。

```
{% set hoge = 'hoge' %}
{% set fuga = 'fuga' %}
{% set class_val = hoge + ' ' + fuga + ' piyo' %}

<p class="{{ class_val }}">テキストが入ります</p>
↓出力結果
<p class="hoge fuga piyo">テキストが入ります</p>
```

いかんせん、いちいちクォーテーションを切り替えて文字列を結合するのがめんどくさいですね。これを楽にする方法として、次の2つがあります。

## JavaScriptのテンプレートリテラルっぽく記述する方法（ハック）

JavaScriptではES2015からテンプレートリテラルが導入され、こういうったケースの変数と文字列の結合がだいぶ楽になりました。実はHubLでも、書き方を工夫すると似たようことを実現できるようになります。class\_valの定義を次のように記述します。

```
{% set class_val = '{{ hoge }} {{ fuga }} piyo' %}
```

ただしこれはハックレベルのものなので、今回のようなシンプルなコードでは動作しますが、この変数をまた別の変数に渡したりすると、期待通りに動作しません。

## リストを作ってその場でjoinする方法

こちらは公式ドキュメントに記載されている方法の組み合わせですので、胸を張ってオススメできます。一時的にリストを作成し、その場で[joinフィルタ](https://designers.hubspot.com/docs/hubl/hubl-supported-filters#join)を使って文字列として結合します。次のようなコードです。

```
{% set hoge = 'hoge' %}
{% set fuga = 'fuga' %}
{% set class_val = [hoge, fuga, 'piyo']|join(' ') %}

<p class="{{ class_val }}">テキストが入ります</p>
↓出力結果
<p class="hoge fuga piyo">テキストが入ります</p>
```

これだけのシンプルな方法ですが、これをするだけでそれなりに開発が楽になり、またコードの可読性が向上することによりミスも減ると思います。ぜひご活用ください。

[CMS Hub](https://demo.100inc.co.jp/category-test/tag/cms-hub)

[CMS Hub](https://demo.100inc.co.jp/category-test/tag/cms-hub)