Thymeleafの#stringsユーティリティとは?初心者でも使える文字列操作ガイド
生徒
「Thymeleafのテンプレートで文字列操作を簡単に行う方法はありますか?」
先生
「ありますよ!Thymeleafの#stringsユーティリティを使えば、文字列の操作がとても簡単になります。」
生徒
「具体的にはどんなことができるんですか?」
先生
「それでは、基本的な使い方から詳しく見ていきましょう!」
1. Thymeleafの#stringsユーティリティとは?
Thymeleafの#stringsユーティリティは、テンプレート内で簡単に文字列操作を行うための組み込み機能です。文字列の大文字化やトリム、連結など、さまざまな操作が簡単にできます。
例えば、以下のコードでは文字列を先頭文字だけ大文字に変換しています。
<p th:text="${#strings.capitalize('thymeleaf')}"></p>
このコードを実行すると、画面には「Thymeleaf」と表示されます。#strings.capitalize()は文字列の先頭文字を大文字にするメソッドです。
2. よく使う#stringsユーティリティのメソッド
Thymeleafの#stringsユーティリティには、次のような便利なメソッドがあります。
capitalize(String): 先頭文字を大文字にする。uncapitalize(String): 先頭文字を小文字にする。trim(String): 文字列の前後の空白を削除する。concat(String, String...): 複数の文字列を連結する。contains(String, String): 指定した文字列が含まれているかをチェックする。
以下に、それぞれの使い方をサンプルコードで示します。
<p th:text="${#strings.capitalize('example')}"></p>
<p th:text="${#strings.uncapitalize('Example')}"></p>
<p th:text="${#strings.trim(' hello ')}"></p>
<p th:text="${#strings.concat('Hello', ' ', 'World!')}"></p>
<p th:text="${#strings.contains('Thymeleaf', 'leaf')}"></p>
これらのメソッドを使えば、テンプレート内での文字列操作がとても効率的になります。
3. 条件付きで文字列操作を行う
Thymeleafでは、条件に応じて文字列操作を行うことも可能です。例えば、文字列がnullの場合にデフォルト値を設定するコードは以下のように書けます。
<p th:text="${name != null ? #strings.capitalize(name) : 'デフォルト名'}"></p>
このコードでは、nameがnullでない場合に先頭文字を大文字にし、nullの場合は「デフォルト名」を表示します。
4. 実践例: フォーム入力値の整形
フォームの入力値を整形して表示する場合にも#stringsは非常に役立ちます。例えば、ユーザー名の先頭文字を大文字にし、余分な空白を取り除くには以下のように記述します。
<p th:text="${#strings.capitalize(#strings.trim(userInput))}"></p>
このコードを使うことで、ユーザーが「 john 」と入力した場合でも「John」として表示できます。
5. ユーティリティメソッドを組み合わせる
複数の#stringsメソッドを組み合わせて使用することで、より複雑な文字列操作を行うことができます。以下の例では、文字列をトリムした後、すべて大文字に変換しています。
<p th:text="${#strings.toUpperCase(#strings.trim(' thymeleaf '))}"></p>
この結果、画面には「THYMELEAF」と表示されます。こうした組み合わせを使えば、テンプレートでの柔軟な操作が可能です。
6. 文字列チェックで使える便利なメソッド
#stringsユーティリティには、文字列の内容をチェックするためのメソッドも多く用意されています。
例えば、文字列が空かどうかを確認したり、特定の文字で始まっているかを調べたりすることができます。
テンプレート内で条件分岐に利用できるので、画面表示の制御がより柔軟になります。
<p th:text="${#strings.isEmpty(text)}"></p>
<p th:text="${#strings.startsWith('Thymeleaf', 'Thy')}"></p>
<p th:text="${#strings.endsWith('template', 'late')}"></p>
これらのメソッドを活用することで、入力チェックやフォームのバリデーションに近い処理をテンプレートだけで行うことも可能です。
7. 文字列の分割や結合を活用しよう
複数の単語からなる文字列を扱う場合、#stringsにはリストとして分割するための便利なメソッドもあります。
逆に、複数の値をまとめてひとつの文字列に連結する操作も簡単に行えます。
表示内容を整える場面で非常に役立つため、覚えておくと便利です。
<p th:each="word : ${#strings.split('Java Spring Thymeleaf', ' ')}"
th:text="${word}"></p>
<p th:text="${#strings.concat('Hello', '-', 'World')}"></p>
分割した単語をループ表示したり、複数の値を結合したりできるため、画面表示に変化をつけたいときに非常に効果的です。
8. テンプレートでの文字列フォーマット
数値や文字列を特定の形式に整形したい場合にも、#stringsは役立ちます。
文字列テンプレートを利用して、決まったフォーマットで値を埋め込むことができます。
メッセージ表示やログ形式を整える場面でよく使われます。
<p th:text="${#strings.format('ユーザー名: %s さん、ログインありがとうございます', userName)}"></p>
このように、テンプレート内でフォーマット文字列を扱えるため、コントローラー側で細かく組み立てなくても、画面ごとに見やすい出力を実現できます。
まとめ
本記事では、Thymeleafの#stringsユーティリティについて詳しく解説しました。#stringsユーティリティを使うことで、テンプレート内での文字列操作が非常に簡単かつ効率的になります。特に、文字列の大文字化や小文字化、トリム、連結、検索といった基本的な操作がコードの簡潔さを保ちながら実現できます。
また、条件付きで文字列を操作する方法や、複数の#stringsメソッドを組み合わせることで、複雑な処理もテンプレート内で柔軟に実行できる点が魅力です。これにより、バックエンドのロジックをテンプレートで再利用しやすくなり、コードの保守性も向上します。
以下に、本記事で紹介したコード例を改めて掲載します。ご自身のプロジェクトで試してみてください。
<p th:text="${#strings.capitalize('hello')}"></p>
<p th:text="${#strings.uncapitalize('HELLO')}"></p>
<p th:text="${#strings.trim(' hello world ')}"></p>
<p th:text="${#strings.concat('Hello', ' ', 'Thymeleaf')}"></p>
<p th:text="${#strings.toUpperCase(#strings.trim(' utility '))}"></p>
<p th:text="${name != null ? #strings.capitalize(name) : 'デフォルト名'}"></p>
これらのサンプルを活用することで、Thymeleafを使用したテンプレート開発がさらに楽しく、効果的なものになるでしょう。
生徒
「今回の記事で、#stringsユーティリティの便利さがよく分かりました!これを使うと、テンプレート内での文字列操作が簡単になりますね。」
先生
「その通りです!特に、複数のメソッドを組み合わせることで、柔軟にテンプレートを設計できますよ。バックエンドのコードを減らせる点も大きな利点です。」
生徒
「今後のプロジェクトでさっそく試してみたいと思います!」
先生
「素晴らしいですね。もしわからないことがあれば、また聞いてくださいね!」